因此,该程序的目的是让用户输入程序将识别为字符串的整数。然后程序必须能够识别输入的每个数字并按如下方式操作它们。如果数字相同或下一个数字更大,则数字将加在一起。如果下一个数字较小,则要减去数字。
一个例子: 输入" 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();
}
}
答案 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个索引处取值,而只是看它是否是第一个索引。