2017-09-02 6 views
0

私はコンピュータサイエンスの初心者です。テキストファイルの整数を配列に入れようとすると少し問題があります。そこテキストファイル内の整数の7行があり、それぞれの行は、以下のようなスペースで区切られた3つの整数があります。私は、3つの異なる配列に各行の3つの数字を置くことになっていますテキストファイルから配列を読み込みましたが、そのような要素の例外は発生していませんか?

0 15 20 
100 25 96 
85 42 15 
52 63 47 
85 44 98 
41 55 74 
85 74 15 

をするように1列まします2番目の配列には2番目の番号が含まれ、3番目の配列には3番目の番号が含まれ、すべて同じ行に含まれます。 私のコードは以下ですが、実行するとそのような要素の例外はありません。最初の配列を印刷すると、配列の最初の位置に格納されている最初の番号が表示されますが、残りの番号は2番目の番号各行の何がループ内で起こっている:(私は説明のいずれかのタイプをいただければ幸いです

import java.io.*; 
    import java.util.Scanner; 
    import java.util.Arrays; 
    public class Trying{ 
    public static void main(String [] args){ 
    Scanner s=null; 
    int [] a= new int [7]; 
    int [] b= new int [7]; 
    int [] c= new int [7]; 
    int i=0; 
    try{ 
     s= new Scanner(new File("input.txt")); 
     while(s.hasNextLine()){ 
     String line=s.nextLine(); 
     Scanner cal= new Scanner(line); 
     a[i]=cal.nextInt(); 
     b[i]=cal.nextInt(); 
     c[i]=cal.nextInt(); 
     i++; 
     } 
    } 
    catch(Exception eee){ 
     eee.printStackTrace(); 
    } 
    System.out.println(Arrays.toString(a)); 
    } 
} 

答えて

0

あなたは置き換えるべきか。 "C [i]は= s.nextIntを();"「C [i]を= CALと .nextInt();」私はあなたが誤って代わりにCALスキャナオブジェクトのsのスキャナオブジェクトを使用したと思われる

あなたはまた、あなたの目的のためのstring.Split()メソッドを使用することができます 代わりの

String line=s.nextLine(); 
    Scanner cal= new Scanner(line); 
    a[i]=cal.nextInt(); 
    b[i]=cal.nextInt(); 
    c[i]=s.nextInt(); 
を使用して。。。

お試しください:

String[] lines=s.nextLine().split(" "); 
    a[i]=Integer.parseInt(lines[0]); 
    b[i]=Integer.parseInt(lines[1]); 
    c[i]=Integer.parseInt(lines[2]); 
+0

ありがとうございました!私は実際には、私がスキャナの代わりにスキャナを呼んでいたことに気付かなかったが、それはちょっと間違ってここに入力していた:)あなたが言ったことを試してみるので、私がラインをスキャンするたびに、スペースを取り除くには?申し訳ありませんが、私が言ったように、私はこれでほとんど始まっておらず、誰にも質問することはできません。 – xValentinax

関連する問題