2015-10-05 79 views
0

對於班級,我應該寫一個數字掃描儀,可以打印用戶輸入的數字,以及這些數字的總和和乘積。我們可以假設用戶在每個號碼後輸入空格,並且用戶可以輸入他們想要的數量。實施例:3個10 2 你的數目如下:3 10 2 薩姆:15 產品:60爲什麼我的循環比我想要的少一次?

public static void substringGrabber() { 
    String recentInt; 
    int lastDigit = 0; 
    int parsedInt = 0; 
    for (int i = 0; i < numbers.length(); i++) { 
     if (! Character.isDigit(numbers.charAt(i))) { 
      char ignoredCharacter = numbers.charAt(i); 
      if (ignoredCharacter != ' ') { 
       System.out.println("Your input of:" + ignoredCharacter + " has been ignored"); 
      } 
      recentInt = numbers.substring(lastDigit, i); 
      parsedInt = Integer.parseInt(recentInt); 
      sum += parsedInt; 
      product *= parsedInt; 
      lastDigit = i + 1; 
      finalString = finalString + parsedInt + " "; 

     } 

    } 

    System.out.println("Your numbers are: " + finalString); 
    System.out.println("Sum: " + sum); 
    System.out.println("Product: " + product); 
} 
+1

什麼是'''數字'''? – Siddhartha

+1

你的錯誤輸出是什麼?你說什麼呢少跑一次? –

+0

僅供參考:您不必使用'0'來初始化int,原始類型會自動將其初始化爲默認值。 0是「int」類型的默認值。 –

回答

1

nextInt()它默認駐留在Scanner使用空白作爲令牌隔板。因此,你的代碼可以是這樣的(請他們事先他們會多少號碼輸入):

System.out.println("How many numbers?"); 
int numbers = scanner.nextInt(); 
int sum = 0; 
int product = 0; 
int[] arr = new arr[numbers]; 
for (int i = 0; i < numbers; i++){ 
    System.out.println("Type in a number"); 
    int input = scanner.nextInt(); 
    sum += input; 
    arr[i] = input; 
    product *= input; 
} 

System.out.println("Your numbers are: " + Arrays.deepToString(arr)); 
System.out.println("Sum: " + sum); 
System.out.println("Product: " + product); 
0

如果您在您的測試字符串的結尾,將工作添加一個空格。

檢查!Character.isDigit(numbers.charAt(i))忽略最後一位數字。

所以改變邏輯來解釋這種情況:你有一個數字,你在你的字符串的末尾。

+0

我仍然對如何改變邏輯感到困惑,因爲我仍然希望確保自己拿起被忽略的字符。 –