簡體   English   中英

為什么我的循環運行的時間比我想要的少?

[英]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);
}

默認情況下,位於ScannernextInt()使用空格作為標記分隔符。 因此,您的代碼可能看起來像這樣(事先詢問他們要輸入多少個數字):

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM