Java:添加和减去字符串中的数字

时间:2018-03-23 23:21:14

标签: java string methods

因此,该程序的目的是让用户输入程序将识别为字符串的整数。然后程序必须能够识别输入的每个数字并按如下方式操作它们。如果数字相同或下一个数字更大,则数字将加在一起。如果下一个数字较小,则要减去数字。

一个例子: 输入" 234224"应输出13(2 + 3 + 4-2 + 2 + 4)

但是我的程序输出为17。 我不知道如何解决问题。我的问题出在我的第一个if语句中。当第二次出现" 2"读取我希望程序从正在计算的输出中减去2,但是由于我如何编写第一个if语句,它会加2。

有人可以使用我使用的相同方法给我一个解决方案吗?

public class StringManipulation {

    public static void main(String[] args) {
        String userInt;
        int total = 0;

        Scanner input = new Scanner(System.in);

        System.out.println("Enter an integer:  ");
        userInt = input.nextLine();

        for (int k = 0; k < userInt.length(); k++) {
            int presentNum = userInt.charAt(k);
            System.out.println(userInt.charAt(k));

            if (presentNum == userInt.charAt(0)) {
                presentNum = Character.getNumericValue(presentNum);
                total += presentNum;
                System.out.println("counter currently at (same)" + total);
            } else if (presentNum >= userInt.charAt(k - 1)) {
                total += Character.getNumericValue(presentNum);
                System.out.println("counter currently at (adding)" + total);
            } else if (presentNum < userInt.charAt(k - 1)) {
                total -= Character.getNumericValue(presentNum);
                System.out.println("counter currently at (subtracting)" + total);
            }
        }

        System.out.println("Output= " + total);

        input.close();

    }
}

3 个答案:

答案 0 :(得分:1)

您的问题在于您的初步检查

if (presentNum == userInt.charAt(0)) 

换句话说,如果您正在查看的数字与第一个数字相同,则会执行填充。在这种特殊情况下,当您在字符串中遇到2时,该条件会启动,并且您最终会添加它而不是减去它。

你可能希望这个条件是

if (k == 0)

答案 1 :(得分:0)

 if (presentNum == userInt.charAt(0)) {
         presentNum=Character.getNumericValue(presentNum);
         total+=presentNum;
         System.out.println("counter currently at (same)" + total);
     }

你的问题就在这里。无论前一个数字如何,第一个数字都会加到总和中。这意味着输出从13(2 + 3 + 4-2 + 2 + 4)变为17(2 + 3 + 4 +2 + 2 + 4)。

你应该有像

这样的东西
    if (k==0){
         presentNum=Character.getNumericValue(presentNum);
         total+=presentNum;
    }

表示第一位数字。

答案 2 :(得分:0)

尝试更改第一个if条件,如下所示

if (k==0) {
    presentNum = Character.getNumericValue(presentNum);
    total += presentNum;
    System.out.println("counter currently at (same)" + total);
}

因为,在第一次迭代中,您只有一个操作数,并且您没有在条件的第0个索引处取值,而只是看它是否是第一个索引。