【发布时间】:2018-03-23 23:21:13
【问题描述】:
所以这个程序的目的是让用户输入一个整数,程序会将其识别为字符串。然后程序必须能够识别输入的每个数字并按如下方式操作它们。如果数字相同或下一个数字更大,则将数字相加。如果下一位数字较小,则要减去数字。
一个例子: 输入“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();
}
}
【问题讨论】:
-
“我不知道如何解决这个问题” 您是否尝试过使用调试器来识别问题? How to debug small programs
-
好奇:为什么你的循环中有一个
charAt(0)调用?任务描述中没有任何内容说明与第一个数字进行比较。这完全是为了比较相邻的数字。