我编写了一个程序来获取数字的和:
因此,例如,当我输入3457时,它应该输出3 + 4 + 5 +7。但是以某种方式,我的逻辑无法正常工作。例如,当我输入68768时,我得到6 + 0 +7。但是当我输入97999时,我得到正确的输出9 + 7 +9。我知道我可以用不同的方法轻松地完成此任务,但是我尝试使用循环。这是我的代码:谢谢大家
import Prog1Tools.IOTools;
public class Aufgabe {
public static void main(String[] args){
System.out.print("Please type in a number: ");
int zahl = IOTools.readInteger();
int ten_thousand = 0;
int thousand = 0;
int hundret = 0;
for(int i = 0; i < 10; i++){
if((zahl / 10000) == i){
ten_thousand = i;
zahl = zahl - (ten_thousand * 10000);
}
for(int f = 0; f < 10; f++){
if((zahl / 1000) == f){
thousand = f;
zahl = zahl - (thousand * 1000);
}
for(int z = 0; z < 10; z++){
if((zahl / 100) == z){
hundret = z;
}
}
}
}
System.out.println( ten_thousand + " + " + thousand + " + " + hundret);
}
}
最佳答案
您提供的代码存在的问题是您嵌套了内部循环。相反,您应该先遍历每个循环,然后再开始下一个循环。
68768当前发生的情况是,当外部for循环变为i = 6时,ten_thousand项设置为6,而内部循环进行“ thousand”和“数百”项的计算-并将其设置为您期望的值(并且让zahl等于768-请注意,您不会在数百个阶段降低zahl)
但是随后,外循环继续循环,这次是i = 7。如果zahl = 768,则zahl / 1000 = 0',因此“千”项设置为0。在zahl = 768时,百项始终重置为7。
97999之所以有效,是因为在“ i”循环的最终迭代中设置了千项,因此永远不会重置。
补救措施是不要嵌套内部循环-而且它的性能也会更好!