を占めたときにも、スキップScanner.nextLine()。ここでは、ファイルの例です:Javaの - 私はタブ区切りで行毎にファイルから読み取るしようとしている新しい行
state 0 start
state 5 accept
transition 0 0 1 x R
transition 1 0 0 x R
私はファイルのScanner
オブジェクトを作成し、\t
に区切り文字を設定します。次の行がある限り、ファイルをループします。私は、行がstate
またはtransition
で始まっているかどうかをチェックし、次の情報を得たいと思います。 state
で始まる行の場合には、私は、それぞれ0
とstart
を得るためnextInt()
を使用し、next()
。次に、次の行に進み、プロセスを繰り返すという問題が発生します。私はnextLine()
を使用しています。それは物事が醜いところです。
私はnextLine()
は、改行文字を消費しないことを承知しているので、私はそれを2回使用することを考えて、それはそれはそう問題の多くを作成します。
Scanner sc = new Scanner(file);
sc.useDelimiter("\t");
while(sc.hasNextLine())
{
if(sc.next().equals("state") == true)
{
int stateNumber = sc.nextInt();
String state = sc.next();
sc.nextLine();
}
sc.nextLine();
}
これは、問題を引き起こしている尊敬するコードのようです。
私はどのようにnext()
作品誤解AMまたは私は他の完全に何かが足りないのですか?
which (sc.hasNextLine()) {
String line = sc.nextLine();
String[] parts = line.split("\\t");
if (parts[0].equals("state")) {
// construct custom object here
}
}
、あなたの元に固執する場合:
実際に情報を読もうとしているとしたら、どうしますか? –
私はその情報を受け取り、それを使ってカスタムオブジェクトを構築しています。 – John