2017-01-11 14 views
0

クラスを使用して入力としてStringを取得しようとしています。私が気づくものを入力スキャナを使用して入力ファイルを処理できません

ama 
asd 
asd 
asd 
fds 
fdgd 
asd 
ghfg 
dfs 
ghfh 

を使用して

public class test { 

    public static void main(String[] args) { 

     Scanner sc = new Scanner(System.in); 
     String line = new String(); 
     for(int t=0;t<10;t++) 
     { 

      if(sc.hasNextLine()) line = sc.nextLine(); 
      System.out.println(line); 
     } 
    } 

} 

は、私は、コンソール上で入力一つずつを書くとき、私は正しい出力を得ることです。しかし、入力を一緒に貼り付けると、最後の出力は得られません。

どのようにこのような状況を克服する。

これは基本的にEnterを望んでおり、次に10番目の入力の出力を示します。

注:これはcodechefの問題に関連するものです。入力は完全に与えられ、1つずつ入力されません。

+1

私は今あなたの問題が何であるかを理解していると思います。最後の入力が処理されていない理由は、残りの文字が持つ改行文字が欠落しているためです。基本的には、各入力(最後のものを除く)の後に隠れた改行文字があるため(Unix環境では\ n、Windowsは:\ r)、エンタープレスをエミュレートしています。あなたの入力をテキストファイルにコピーして最後の入力とヒットリターンに行くなら、一番下の空の行を含むすべてをあなたのコンソールにコピーして、最後の入力を受け取るはずです。 – CraigR8806

+0

実際に私は入力ファイルを変更することはできません。私はそのサイトに自分のコードを置くことができ、入力ファイルをチェックして出力をチェックします。 –

答えて

0

区切り文字を使用するようにスキャナに指示できます。ただし、デリミタが後に現れたときには、次のデータを取得するだけであることに注意してください。これが最終出力を得られない理由です。

Scanner sc = new Scanner(System.in); 
sc.useDelimiter(" "); 
String line = new String(); 

for(int t=0;t<10;t++){ 
    if(sc.hasNext()) line = sc.next(); 
    System.out.println(line); 
} 

ので

あなたが使用して... ... 入力"ama asd asd asd fds fdgd asd fghfg dfs ghfh "(末尾のスペースに注意)で、それが動作するはずです。

+0

入力ファイルは少し異なっています。エラーがあります。私は出力が何になるかを決める者ではありません。 –

+0

@ManojitPaulです。しかし区切り文字(改行文字や空白文字など)を取得しなければ、スキャナはデータをいつ出力するかを知ることができません。 .nextLine()を使用すると、区切り文字は改行(Enter pressed)になります。この行はこれで終了します。見つからない場合、スキャナはラインがまだ完成していないと考えます。 – mumpitz

+0

このような方法で入力を行うには、より良い方法があります。 –

関連する問題