2015-04-23 20 views
0

我正在介紹java。該程序應該能夠要求10個整數。然後它將整數標記爲字符串。然後我應該使用parseInt方法將字符串轉換爲Int。我也應該拋出一個try catch循環,所以如果有人輸入了除整數之外的任何東西,它會打印一個無效的語句。 try catch語句應該告訴用戶他們錯誤地輸入了哪個整數並要求他們重新輸入。如何使用此try catch方法?

繼承人的輸出應該是什麼樣子

歡迎彩擴10 - 例外。
輸入十個整數。
整數#1:50
整數#2:25
整數#3:37
整數#4:98
整數#5:77
整數#6:41
整數#7:44
整數#8:42
整數#9:29
整數#10位:Z
z是不是一個整數。請重新輸入整數#10:75

您輸入50 25 37 98 77 41 44 42 29 75
整數的總輸入爲:518

感謝您使用的例外程序。

這裏是我的代碼:

import java.util.Scanner; 
import java.util.Arrays; 
import java.util.List; 

public class Exceptions10 

{ 
    public static void main(String[] args) 
    { 
     String string1, string2, string3, string4, string5, string6, string7,  string8, string9, string10; 
     int Int1, Int2, Int3, Int4, Int5, Int6, Int7, Int8, Int9, Int10,  Average; 

    Scanner scan = new Scanner(System.in); 

    System.out.print("Welcome to Minilab 10 -Exceptions"); 

    System.out.print("\n\nEnter 10 Integers"); 

    System.out.print("\n\nInteger 1: "); 
    string1 = scan.next(); 
    System.out.print("Integer 2: "); 
    string2 = scan.next(); 
    System.out.print("Integer 3: "); 
    string3 = scan.next(); 
    System.out.print("Integer 4: "); 
    string4 = scan.next(); 
    System.out.print("Integer 5: "); 
    string5 = scan.next(); 
    System.out.print("Integer 6: "); 
    string6 = scan.next(); 
    System.out.print("Integer 7: "); 
    string7 = scan.next(); 
    System.out.print("Integer 8: "); 
    string8 = scan.next(); 
    System.out.print("Integer 9: "); 
    string9 = scan.next(); 
    System.out.print("Integer 10: "); 
    string10 = scan.next(); 



    try 
    { 
    Int1 = Integer.parseInt(string1); 
    Int2 = Integer.parseInt(string2); 
    Int3 = Integer.parseInt(string3); 
    Int4 = Integer.parseInt(string4); 
    Int5 = Integer.parseInt(string5); 
    Int6 = Integer.parseInt(string6); 
    Int7 = Integer.parseInt(string7); 
    Int8 = Integer.parseInt(string8); 
    Int9 = Integer.parseInt(string9); 
    Int10 = Integer.parseInt(string10); 
    } 
    catch (NumberFormatException e) 
    { 
      System.out.println("Integer--- is not an integer. Please enter integer--- again: "); 
    } 


    int [] value = {Int1, Int2, Int3, Int4, Int5, Int6, Int7, Int8, Int9,  Int10}; 

    System.out.print("\nYou entered: "); 

    for (int i = 0; i < value.length; i++) 
    { 
    System.out.print(value[i]); 
    System.out.print(" "); 
    } 
     System.out.print("\n\n"); 

     Average = (Int1 + Int2 + Int3 + Int4 + Int5 + Int6 + Int7 + Int8 + Int9  + Int10)/value.length; 

     System.out.print("The average of the integers is " + Average +    "\n\n"); 


    } 
} 

我的問題是我嘗試catch語句。我不知道在哪裏或如何放置它。

+1

您當前的try/catch塊將處理任何不是數字的數字轉換。如果你想單獨捕捉每一個,並循環直到正確,你需要在每個'Integer.parseInt()'' – SnakeDoc

+0

周圍放一個try/catch我強烈建議創建一個簡單的for循環並使用String數組來存儲字符串。它使你的代碼更加緊湊。 – Jyr

回答

0

以下方法將嘗試將String解析爲一個int並繼續請求輸入,直到它可以完成。

public static int parse(String str, int number){ 
    while(true){ 
     try{ 
      // Attempt to parse it as an int 
      return Integer.parseInt(str); 
     catch(Exception e){ 
      // Request the input again 
      System.out.println("Integer #" + number + " was entered incorrectly, please enter it again: "); 
      str = scan.next(); 
     } 
    } 
    return 0; // Stop compiler from complaining about no return statement 
} 

如果要將輸入放入列表中,則可以遍歷列表,每次都調用此方法。這也會使代碼更加緊湊和可維護。

+0

很確定你想在這裏使用'scan.next()'而不是'scan.nextLine()'。 – Jyr

+0

@Jyr謝謝,修復! – SamTebbs33

0

有時,我們可以檢查一次輸入的輸入。 我們只是使用十次循環作爲Do..while,我們可以在有效輸入後減少計數器。如果輸入無效,就繼續循環使用瞭如:

do{ 
    try{ 
     System.out.print("\n\nInteger "+counter+": "); 
     Int[counter] = Integer.parseInt(scan.next()); 
     counter++; 
    } 
    catch{ 
     continue; 
    } 
}while(counter>10); 

我們也可以應用的想法,你的代碼的最後一部分。只需要改變循環的條件。

0

正如我在評論中所說,我強烈建議使用數組。這樣,你可以在一個 for循環中做一切相當簡單的事情,而不是創建十個字符串和十個整數(想象一下,如果你被要求爲100個字符串做這個)。

String input; 
int[] integers = new int[10]; 
boolean parsed; 
Scanner scan = new Scanner(System.in); 

System.out.println("Welcome to Minilab 10: Exceptions"); 
System.out.println("Enter 10 Integers"); 

for (int i = 0; i < integers.length; i++) { 
    System.out.println("Integer " + (i+1) + ": "); 
    input = scan.next(); 
    parsed = false; 
    while (!parsed) { 
     try { 
      integers[i] = Integer.parseInt(input); 
      parsed = true; 
     } catch (NumberFormatException e) { 
      System.out.println("Input " + (i+1) + " is not an integer. Please enter it again: "); 
      input = scan.next(); 
     } 
    } 
} 
+0

正如你選擇重構他的代碼,爲什麼輸入一個數組。分析後,該值不再需要。 –

+0

是不是你的整數陣列是什麼。 –

+0

感謝您的幫助 –

0

因爲你的程序需要,如果他們進入一個無效的號碼重新提示用戶,你會希望你的提示,一個循環,將打破一旦輸入正確的數字之內。

int[] ints = new int[10]; 
    int i = 0; 
    while (i < ints.length) { 
     int prettyInt = i + 1; 
     System.out.print("Integer " + prettyInt + ": "); 
     try { 
      ints[i] = scanner.nextInt(); 
      i++; // continue to next int 
     } catch (Exception e) { 
      System.out.println("Integer " + scanner.next() 
        + " is not an integer. Please enter integer " + prettyInt + " again: "); 
     } 
    }