Java以数学顺序打印出所有数字

Java以数学顺序打印出所有数字,java,Java,我想让程序打印出每个数字,每个数字加起来等于这个数字的3次方。例如,数字153:1^3+5^3+3^3=153 这是代码,但我不知道为什么它不起作用 编辑:我拥有siffra++的原因;因为我想让它测试所有的数字到500。这是我现在得到的,但它现在仍然有效,没有在JOptionPane中显示任何内容: 问题是该部分在循环之外: String siffran = Integer.toString(siffra); int count = 0; 因此,您的计数将每个数字与前一个数字相加,因为您增加

我想让程序打印出每个数字,每个数字加起来等于这个数字的3次方。例如,数字153:1^3+5^3+3^3=153

这是代码,但我不知道为什么它不起作用

编辑:我拥有siffra++的原因;因为我想让它测试所有的数字到500。这是我现在得到的,但它现在仍然有效,没有在JOptionPane中显示任何内容:


问题是该部分在循环之外:

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