2016-05-29 14 views
1

次のコードでは、次の入力を最初はスペースで区切られた2つの文字列に分割しようとしています。.split( '')Javaの空白行を作成する

入力:

3413289830 a-bcdefghij 
776 a+bc 

プログラム:

import java.io.*; 
import java.util.Scanner; 

public class StringOut 
{ 
    public static void main(String[] args) throws IOException 
    { 
     File file = new File("C:\\test.txt"); 
     Scanner in = new Scanner(file); 
     String line; 

     while (in.hasNextLine() == true) 
     { 
      line = in.nextLine(); 
      String parts[] = line.split(' '); 
      System.out.println(parts[0]); 
     } 
    } 
} 

出力:あなたが見ることができるよう

3413289830 

776 

ので、空白行は、コード内の二回目に出力されますwhileが実行されます。この空白行は明らかに私のwhileループの範囲内のいくつかのコードから来ているので、私はしかし

in.nextLine(); 

を追加することによって、このエラーを回避することができ、私はこの余分なラインがどこから来ている知っていただきたいと思いますか?

答えて

1

このコードは正しくコンパイルされていますか?あなたは二重引用符でline.split(" ")を使用しなければなりません。

あなたが書いたコードは、入力と完全に一致しています。余分な空白行はありません。私はそれを試してみました。

入力ファイルをもう一度確認してください。

in.nextLine()hasNextLine()は、読み取る行がさらにあるかどうかを確認するため、いずれの場合も必要です。

入力:

3413289830 a-bcdefghij 
776 a+bc 

プログラム:

import java.io.*; 
import java.util.Scanner; 

public class StringOut 
{ 
    public static void main(String[] args) throws IOException 
    { 
     File file = new File("test.txt"); 
     Scanner in = new Scanner(file); 
     String line; 

     while (in.hasNextLine() == true) 
     { 
      line = in.nextLine(); 
      String parts[] = line.split(" "); 
      System.out.println(parts[0]); 
     } 
    } 
} 

出力:

3413289830 
776 
+0

いや、私は単なるテキストボックスにファイルを書き直し、事故によって '' を置き、中おっと実際のファイルは ""ですが、テキストファイルの入力には各行の最後に余分なスペースがありますが、左矢印キーを押すとそのまま残りますあなたが再びそれを打つまで、同じ位置にして次の行に移動しないでください。うまくいけば意味があります。また、whileセクションの先頭にはすでにin.nextLine()があります。 – Craig

+0

私は正確なコードと私のために働いている入力を追加しました。また、私が言ったように、 'in.nextLine()'はとにかく必要です。そうでなければ、ファイルを読むことができません。それは完璧です。あなたの入力ファイルに何か間違っているはずです。 – Kajal

+0

'hasNextLine()'はより多くの行があるかどうかをチェックするだけです。それは行を読んでいない。 – Kajal

-2

は、あなたはそれが実行されます後に新しい行(LN)を印刷します)のprintlnとして

System.out.print(parts[0]); 

(に

System.out.println(parts[0]); 

を変更する必要があります。

関連する問題