2013-10-31 131 views
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); 
} 
+1

如果您想在外部使用它們,請不要在'try'塊中聲明變量。 – Maroun

回答

1

您必須定義try-catch之外的變量。您想在try-catch之外使用的其他變量也一樣。

2

你正在try塊中聲明幅度。

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

所以你必須聲明它的嘗試外:

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); 
} 
+0

對,這真的很有幫助謝謝 –

0

嘗試這是在try塊創建此

Double magnitude=null ; 
    Double positionLatitude=null; 
    Double positionLongitude=null; 
    int year; 
    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); 
       positionLatitude = Double.parseDouble(scanner.nextLine()); 
       System.out.print("Please Enter The Earthquakes Longitude Position: "); 
       scanner = new Scanner(System.in); 
      positionLongitude = Double.parseDouble(scanner.nextLine()); 
       System.out.print("Please Enter The Year That The Earthquake Occured: "); 
       scanner = new Scanner(System.in); 
       year = Integer.parseInt(scanner.nextLine()); 
       System.out.println("Magnitude = " + magnitude); 
     } 
+0

如果你返回的東西至少要初始化爲'null' – Dropout

1

的變量是local variables。它們只存在於try塊內,因此它們不能從外部訪問。如果你在try塊上面聲明變量,你可以在try塊內外訪問它。

+0

謝謝,這是唯一的答案,提供了一些關於範圍界定的額外解釋。 – Geekfish

0

聲明它try塊之外,即使是空..

Double magnitude = null; 
try{ 
    // ... 
    magnitude = Double.parseDouble(scanner.nextLine()); 
    // ... 
}catch{ 
    // ... 
} 
return magnitude; 
0

只是聲明幅度全局變量來,我認爲問題的get解決

你宣稱try塊內的變量,並試圖訪問try.that這個變量,這就是它提出錯誤的原因,因爲找不到符號。