2017-12-08 4 views
-1

私のプログラムの指示です:私のプログラムでキャリッジリターンを受け取ることはできません

このファイルの最初の行には、続く行数を示す数字が入ります。それ以降のすべての行には単語と整数があります。単語と整数の2つの配列を入力します。配列が塗りつぶされたら、String配列の各要素に移動し、その文字列が並列配列に印刷のために言う回数を出力します。

しかし、私が答えを印刷しようとすると、私が想定しているファイルから読み込むときに拾う行がないというエラーが発生します。あなたのコードの最初の部分で

Scanner input = new Scanner(new File("parallel.txt")); 
    int numLine = input.nextInt(); 

    int [] array = new int[numLine]; 
    String [] Stringarray = new String[numLine]; 

    for (int i = 0; i< numLine; i++) 
     { 
      Stringarray[i] = input.next(); 
      array[i] = input.nextInt(); 
      input.nextLine(); 
     } 

    for (int i = 0; i<Stringarray.length; i++) 
     { 
      for (int a = 0; a<array[a]; a++) 
       out.print(Stringarray[i] + " "); 
      out.println(); 
     } 

} 

}

+1

同じです。 – Sid

+1

これはhttps://stackoverflow.com/q/23036062と重複している可能性があると思っていましたが、私が見ているように、おそらくそうではありません。これに助けが必要な場合は、エラーの内容を正確に伝え、入力内容を表示することをお勧めします。 –

+0

「エラーが発生し、拾う行がない」と定義します。 – EJP

答えて

0

、あなたはファイルの最初の整数を読み、そしてあなたは、改行文字を読み取ることができません。 2番目の行の最初のトークンをStringarray[i] = input.next()で読み取ろうとしましたが、スキャナはまだ最初の行を待っていて、次の行はありません。あなたがそうのようなものを修正することができます。

int numLine = input.nextInt(); 
input.nextLine(); 

私は一度に行全体を読んで、その後、別途それを解析することを好む、それは非常にきれいです。あなたのコードの第二部で

String line = input.nextLine(); 
int number = Integer.parseInt(line); // parse the entire line as an integer 

String line = input.nextLine(); 
String[] parts = line.split(" "); // split the line on spaces 
String word = parts[0]; // treat the first part as a string 
int number = Integer.parseInt(parts[1]); // parse the second part as an integer 

、単語列と同じインデックスとインデックスに数字の配列を使用すると、必要なワードX回をプリントアウトする:例えば、および任意のエラーチェックなし。あなたはファイル

の整数に対応する文字列の配列要素を印刷したい

for (int i = 0; i < Stringarray.length; i++) // for each word in the Stringarray 
{ 
    for (int a = 0; a < array[i]; a++) // index with i, not a 
     System.out.print(Stringarray[i] + " "); // print the word 
    System.out.println(); 
} 
0

ので、あなたが

3 //indicate the line number 
string1 6 
string2 7 
string3 5 

以下のように入力ファイルを持っていて、

以下のような出力を期待しています
string1 string1 string1 string1 string1 string1 
string2 string2 string2 string2 string2 string2 string2 
string3 string3 string3 string3 string3 

ロジックを変更したくない場合は、これを使用して出力を得ることができます

for (int a = 0; a<array.length; a++) 
for(int k=0;k<array[a];k++) 
    System.out.print(Stringarray[a] + " "); 
System.out.println() 

Stringarray[a] - 私たちはStringarrayarrayの長さなどの任意のArrayindexbound例外を取得習慣>ここでは、入力のサンプルが役立つだろう常に

関連する問題