Java以数学顺序打印出所有数字
我想让程序打印出每个数字,每个数字加起来等于这个数字的3次方。例如,数字153:1^3+5^3+3^3=153 这是代码,但我不知道为什么它不起作用 编辑:我拥有siffra++的原因;因为我想让它测试所有的数字到500。这是我现在得到的,但它现在仍然有效,没有在JOptionPane中显示任何内容:Java以数学顺序打印出所有数字,java,Java,我想让程序打印出每个数字,每个数字加起来等于这个数字的3次方。例如,数字153:1^3+5^3+3^3=153 这是代码,但我不知道为什么它不起作用 编辑:我拥有siffra++的原因;因为我想让它测试所有的数字到500。这是我现在得到的,但它现在仍然有效,没有在JOptionPane中显示任何内容: 问题是该部分在循环之外: String siffran = Integer.toString(siffra); int count = 0; 因此,您的计数将每个数字与前一个数字相加,因为您增加
问题是该部分在循环之外:
String siffran = Integer.toString(siffra);
int count = 0;
因此,您的计数将每个数字与前一个数字相加,因为您增加了siffra,但在siffra上工作-您一直在检查100
除此之外,我还接受@Sluth的建议-无需来回转换为string和int-使用数学模和%来获得数字这些数字称为阿姆斯特朗数
首先是你的错误
1您正在进行计数和我假设0,只有当您发现数字符合您的条件,如153…如果数字不匹配,那么新数字的计数/和不应该为零。
第二,你们是说,你们想测试数字到500,但你们使用的是if条件,这个条件只能执行一次,所以在那个里使用循环
我想提出一些建议
1使用StringBuilder代替使用字符串。
2也不是将整数转换为字符串,然后使用子字符串直接处理整数
所以修改代码如下
int siffra = 153;
StringBuilder allaSiffror = new StringBuilder();
int count;
while(siffra<500){
count = 0;
int temp = siffra;
int num;
while(temp>0){
num=temp%10;
temp=temp/10;
count += Math.pow(num,3);
}
if (count == siffra){
System.out.println(count);
allaSiffror.append(count + " ");
}
siffra++;
}
System.out.println(allaSiffror.toString());
JOptionPane.showMessageDialog(null, allaSiffror.toString());
当你说“它不工作”时,它在做什么?谢谢你的帮助,我理解我犯的一些错误。请检查我问题中的编辑,并告诉我现在哪里出了问题。
int siffra = 153;
StringBuilder allaSiffror = new StringBuilder();
int count;
while(siffra<500){
count = 0;
int temp = siffra;
int num;
while(temp>0){
num=temp%10;
temp=temp/10;
count += Math.pow(num,3);
}
if (count == siffra){
System.out.println(count);
allaSiffror.append(count + " ");
}
siffra++;
}
System.out.println(allaSiffror.toString());
JOptionPane.showMessageDialog(null, allaSiffror.toString());
153
370
371
407
153 370 371 407