0

私はJavaが初めてで、ユーザー入力を取得し、入力の各行を変数として保存し、各値を返して別の場所に渡すことができるようにしようとしています。コンパイルしようとすると、変数の大きさが見つからないことがわかります。他のものも見つからないと思います。これは、「try」内で変数を宣言したが、return ステートメントがそれらを受け入れるように変数を取得する方法がわからないためだと推測しています。コードは次のとおりです。

 public Earthquake userAddEarthquake()
    {

        Scanner scanner = new Scanner(System.in);
        try{
            // convert the string read from the scanner into Integer type
            System.out.println("Please Enter An Earthquake Magnitude: ");
            Double magnitude = Double.parseDouble(scanner.nextLine());
            System.out.println("Please Enter The Earthquakes Latitude Position: ");
            scanner = new Scanner(System.in);
            Double positionLatitude = Double.parseDouble(scanner.nextLine()); 
            System.out.print("Please Enter The Earthquakes Longitude Position: ");
            scanner = new Scanner(System.in);
            Double positionLongitude = Double.parseDouble(scanner.nextLine()); 
            System.out.print("Please Enter The Year That The Earthquake Occured: ");
            scanner = new Scanner(System.in);
            int year = Integer.parseInt(scanner.nextLine()); 
            System.out.println("Magnitude = " + magnitude);
    }  

    catch(NumberFormatException ne){
            System.out.println("Invalid Input");
        }
        finally{
            scanner.close();

        }

     return new Earthquake(magnitude, positionLatitude, positionLongitude, year);   
}
4

6 に答える 6

2

try ブロック内でマグニチュードを宣言しています。

try {
    Double magnitude
    //magnitude will only be visible inside try block
}

したがって、try の外で宣言する必要があります。

public Earthquake userAddEarthquake() {

    Scanner scanner = new Scanner(System.in);
    Double magnitude = Double.MIN_VALUE; //with a default value
    try{
        // convert the string read from the scanner into Integer type
        System.out.println("Please Enter An Earthquake Magnitude: ");
        magnitude = Double.parseDouble(scanner.nextLine());
        System.out.println("Please Enter The Earthquakes Latitude Position: ");
        scanner = new Scanner(System.in);
        Double positionLatitude = Double.parseDouble(scanner.nextLine()); 
        System.out.print("Please Enter The Earthquakes Longitude Position: ");
        scanner = new Scanner(System.in);
        Double positionLongitude = Double.parseDouble(scanner.nextLine()); 
        System.out.print("Please Enter The Year That The Earthquake Occured: ");
        scanner = new Scanner(System.in);
        int year = Integer.parseInt(scanner.nextLine()); 
        System.out.println("Magnitude = " + magnitude);
}  

catch(NumberFormatException ne){
        System.out.println("Invalid Input");
    }
    finally{
        scanner.close();

    }

 return new Earthquake(magnitude, positionLatitude, positionLongitude, year);   
}
于 2013-10-31T09:48:30.937 に答える
1

try-catch の外で変数を定義する必要があります。try-catch 以外で使用する他の変数についても同様です。

于 2013-10-31T09:47:49.687 に答える
0

マグニチュード変数をグローバルに宣言するだけで、問題が解決すると思います

その変数を try ブロック内で宣言し、try の外でその変数にアクセスしようとしました。これが、シンボルが見つからないというエラーが発生している理由です。

于 2013-10-31T09:54:35.983 に答える