1

私は 2 年以上コーディングしておらず、信じられないほど錆びていますが、かなり長い間 Google にアクセスした後、何が間違っていたのかわかりません。最初に、このプログラムは非常に簡単ですが説明します。680 個の数字を含む .txt ファイルがあり、1 行に 1 つの数字があり、000 ~ 999 の範囲の数字の頻度を見つけようとしています。かなり基本的なように見えるので、周波数部分を把握できると思いますが、.txt ファイルから数値をインポートする方法がわかりません。これは私が持っているエラーです:

C:\Users\Arthur\Documents\FrequencyStraightPlay\FrequencyStraightPlay.java:17: error: variable sc might not have been initialized
        while (sc.hasNextInt()) {
               ^
1 error

コード:

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

public class FrequencyStraightPlay {

public static void main(String[] args) {

    int [] rawNumbers = new int [680];
    int i = 0;

    Scanner sc;
    try {
        sc = new Scanner(new File("Numbersnospaces.txt"));
    } catch (FileNotFoundException e) {
        System.out.println("File not Found!");
    }
    while (sc.hasNextInt()) {
        rawNumbers[i++] = sc.nextInt();
    }

    System.out.println("The Raw Numbers: ");

    for (i = 0; i < 680; i++) {
        System.out.println(rawNumbers[i]);
    }

}

}
4

3 に答える 3

0

try catch ブロックのコードが例外をスローした場合、sc の値は null です。例外をキャッチしたら、 sc.hasNextInt() に進むべきではありません。

try {
        sc = new Scanner(new File("Numbersnospaces.txt"));
    } catch (FileNotFoundException e) {
        System.out.println("File not Found!");
        return; // this will remove that error/warning
    }
于 2013-04-09T17:22:05.347 に答える