«A» простое решение, было бы передать PrintStream
, который вы хотите использовать в метод, например ...
public static void printArr(int dist[], int n, PrintStream ps) {
for (int i = 0; i < N; i++) {
ps.println("[" + dist[i] + "]");
}
}
Для этого вам потребуется передать PrintStream
экземпляр метода, когда вы когда-либо его вызываете.Поскольку dijkstra
также вызывает printArr
, вам нужно будет передать ему экземпляр PrintStream
...
public static void dijkstra(int graph[][], int src, PrintStream ps) {
//...
// print the constructed distance array
printArr(dist, N, ps);
}
Затем вы просто создаете экземпляр PrintStream
, который выхочу использовать и передать его методам ...
public static void main(String[] args) {
try (FileInputStream textFile = new FileInputStream("EXAMPLE(2).txt")) {
int i = 0, j = 0; // counters
Scanner scan = new Scanner(textFile);
N = scan.nextInt(); // read in the size
String flush = scan.nextLine(); // gets rid of linefeed
System.out.println(N);
M = new int[N][N]; // instantiates array
// this loop reads in matrix from input file
String line;
while (i < N && (line = scan.nextLine()) != null) {
j = 0;
String delim = " ";
String tokens[] = line.split(delim);
for (String a : tokens) {
M[i][j] = Integer.parseInt(a);
j++;
}
i++;
}
if (i > N)
;
SV = scan.nextInt();
try (PrintStream ps = new PrintStream("EXAMPLE(2).txt")) {
printMatrix(M);
System.out.println(SV);
System.out.println();
dijkstra(M, SV - 1, ps);
}
} catch (Exception e) {
e.printStackTrace();
}
}
Я немного реструктурировал ваш метод main
, так как вывод зависит от успешности ввода;).Также см. оператор try-with-resources
для получения более подробной информации
Это означает, что вы можете сделать что-то вроде ...
dijkstra(M, SV - 1, System.out);
, и он снова напечатает выводконсоль :) 1025 *