[英]Why is my loop running one less time than I'd like?
在課堂上,我應該寫一個數字掃描儀來打印用戶輸入,這些數字的總和和乘積。 我們可以假設用戶在每個數字之后輸入一個空格,並且用戶可以輸入任意數量的數字。 例如: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);
}
默認情況下,位於Scanner
的nextInt()
使用空格作為標記分隔符。 因此,您的代碼可能看起來像這樣(事先詢問他們要輸入多少個數字):
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);
如果在測試字符串的末尾添加空格,它將起作用。
此檢查!Character.isDigit(numbers.charAt(i))忽略最后一位。
因此請更改邏輯以解決該情況:您有一個數字,並且位於字符串的末尾。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.