からの入力をリダイレクトすると、ここに私のコードですが:エラーファイル
import java.util.Scanner;
class Graph{
boolean [][]array;
int N;
Graph(){
array = new boolean [1001][1001];
N=0;
}
void read_graph() {
Scanner sc = new Scanner(System.in);
N = sc.nextInt();
sc.nextLine();
String str;
String []substr;
for (int K=1; K<=N; K++){
str = sc.nextLine();
substr = str.split(" ");
for (int I=0; I<substr.length; I++)
System.out.println(substr[0]+" "+substr[I]);
}
}
void query(){
Scanner sc = new Scanner(System.in);
int P, Q;
int counter = 0;
boolean flag = true;
while (flag){
counter++;
P = sc.nextInt();
Q = sc.nextInt();
sc.nextLine();
if (P == Q && P == 0)
flag =false;
else {
if (Q == 1)
System.out.println("DFS done");
else
System.out.println("Bfs done");
}
}
}
}
class demo{
public static void main(String [] args){
Graph G= new Graph();
Scanner sc = new Scanner(System.in);
int numGraphs = sc.nextInt();
while (numGraphs>0){
G.read_graph();
G.query();
numGraphs--;
}
}
}
は、ここで入力データです:私はキーボードで、この入力データを与えた場合
1
6
1 2 3 4
2 2 3 6
3 2 1 2
4 1 1
5 0
6 1 2
5 1
1 0
1 0
0 0
それが正常に動作しますが、私は、この入力を保存したときこれを入力としてリダイレクトします(linuxでは '<'を使用しています)、エラーメッセージが表示されます。
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:855)
at java.util.Scanner.next(Scanner.java:1478)
at java.util.Scanner.nextInt(Scanner.java:2108)
at java.util.Scanner.nextInt(Scanner.java:2067)
at Graph.read_graph(b.java:13)
at demo.main(b.java:56)
間違いを指摘してもらえますか。
ありがとう、あなたのトリックは働いたが、私はまだファイルからの入力をリダイレクトすることはできませんでしたが、キーボードによる入力はうまくいきませんでしたか? –
私はScannerが内部的にバッファを管理する方法と関係があると考えています。私は入力全体をワンショットでコピーしてコピーすると、実際にキーボードによる入力は私のためには機能しません。私は入力を1つずつ入力するだけで動作します。おそらく、入力全体をワンショットで作成すると、最初に作成したScannerオブジェクトはバッファ内の入力全体を取得し、次に2つのScannerオブジェクトは空のバッファを取得します。 –
@SusamPal - あなたが正しいと思います。それは異なる行動を説明するでしょう。 –