2017-04-02 12 views
1

基本的には、私のインストラクターが提供するCS160Inputというメソッドでファイル名を尋ねています。テキスト文書にはそれぞれ独自の行に複数のエントリがあり、配列の各場所に各番号を割り当てようとしていますが、実際に配列に書き込むことはできません。私はそれがファイルを見つけることを知っている、私はカウンタを印刷するとき、それは私にファイルの行の正しい量を教えてくれるので。しかし、配列内の場所をプリントアウトしようとすると、私のコードで見てきたようにインデックス3を試してみました。私は最初に文字列の配列を作成しようとし、各インデックス値のnullを取得して終わった。値が間にあった場合hasNextInt()がfalseを吐きすることができることを指摘@Gendarmeへテキストファイルから文字列を読み込み、配列に入力する文字列をintに変更しようとしていません。

public static void caclulate() throws FileNotFoundException { 
     String fileName = CS160Input.readString("Please enter the name of the file: "); 
     Scanner sc = new Scanner (new File (fileName)); 
     int value, counter = 0; 
     int array[] = null; 
     while (sc.hasNextLine()) { 
      sc.nextLine(); 
      counter++; 
     } 
     Scanner scanner = new Scanner(new File(fileName)); 
     int[] calcArray = new int [counter]; 
     int i = 0; 
     while(scanner.hasNextInt()){ 
      calcArray[i++] = scanner.nextInt(); 
     } 
     System.out.println(calcArray[3]); 
     System.out.println(counter); 
    } 
+0

'value'と' array'のポイントは何ですか?あなたはこれらの変数を使用していません。 – Gendarme

+0

コードは私のためにうまくいきます(1行に1つの整数を持つファイルで)。ちなみに、メソッド名のスペルが間違っています( 'c'と' l'は転置されます)。 – ajb

+1

あなたのファイルはおそらく整数の間に非整数の値を持ち、 'hasNextInt()'がfalseを返すようにします。 – Gendarme

答えて

0

おかげで、それは私がよく見て作って、私は前のプログラムに数字が書き込まれていることに気づきましたテキストファイルは2桁の小数点以下2桁です。 hasNextDouble()に変更すると、プログラムは意図したとおりに動作しました。

関連する問題