import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.StringTokenizer;

public class ReadGraph {

public static void main(String[] args) {
ReadGraph rg = new ReadGraph();
try {
File f = new File("graph.txt");
FileReader fr;
fr = new FileReader(f);
BufferedReader br = new BufferedReader(fr);
String satir;
int j = 0;
try {
// bos satır olana kadar dosyayı oku
while ((satir = br.readLine()) != null) {
System.out.println(satir);
// satirlari bosluklara gore bol
StringTokenizer st = new StringTokenizer(satir);
int top = 0;
// dosyanın satırlarını okuyup atama yapacagım diziyi
// tanımladım.
int[] x = new int[3];
while (st.hasMoreElements()) {
// dosyadan her satırı okuyup bır dızıye atadım
for (int i = 0; i < 3; i++) {
x[i] = Integer
.parseInt(st.nextElement().toString());

top += x[i];
}
// buble sort metoduna parametre olarak dosyanın her
// satırından okududumuz elemanların dizisini gönderdim
rg.bublesort(x);

// dosyadan okunan her satırdakı elemanların toplamını
// yazdırdım
System.out.println("toplam " + top);
top = 0;
j++;
}
}

} catch (IOException e) {
e.printStackTrace();
}

} catch (FileNotFoundException e) {
e.printStackTrace();
}

}

private void bublesort(int[] x) {
for (int pass = 1; pass < x.length; pass++) {
for (int i = 0; i < x.length – pass; i++) {
if (x[i] > x[i + 1]) {
int temp = x[i];
x[i] = x[i + 1];
x[i + 1] = temp;
}
}
}

System.out.print("en küçük " + x[0] + "\n");
System.out.print("en büyük " + x[2] + "\n");

}

}

Graph.txt dosyası
7 2 5
4 1 4
4 8 4
12 7 6

Ekran Çıktısı
7 2 5
en küçük 2
en büyük 7
toplam 14
4 1 4
en küçük 1
en büyük 4
toplam 9
4 8 4
en küçük 4
en büyük 8
toplam 16
12 7 6
en küçük 6
en büyük 12
toplam 25