Java 找出前两位数字和后两位数字之和的平方等于数字本身的所有四位数字

Java 找出前两位数字和后两位数字之和的平方等于数字本身的所有四位数字,java,math,conditional-statements,Java,Math,Conditional Statements,我写的程序不起作用,我真的不知道为什么。我非常感谢你的帮助。多谢各位 for (int i = 1000; i <= 9999; i++){ int n = i; int remandier1, remandier2,finalanswer; double result1=0; while(n != 0){ remandier1 = n

我写的程序不起作用,我真的不知道为什么。我非常感谢你的帮助。多谢各位

         for (int i = 1000; i <= 9999; i++){
             int n = i;
             int remandier1, remandier2,finalanswer;
             double result1=0;
             while(n != 0){
                 remandier1 = n % 100;
                 remandier2 = n /100;
                 finalanswer = remandier1 + remandier2;
                 result1 = Math.pow(finalanswer, 2);
             }
             if (result1 == n){
                 System.out.println(i);
             }
         }

for(int i=1000;i您使用的循环基于
n
与0不同,但是
n
在循环过程中从未被修改。循环如何实际停止..循环?可能是我遗漏了什么,但在我看来,
n
将永远等于
i
的设定值

while(n != 0)
{
    remandier1 = n % 100;
    remandier2 = n /100;
    finalanswer = remandier1 + remandier2;
    result1 = Math.pow(finalanswer, 2);
    // add something to stop the loop
    n = n - 1; // for example
}

它不工作?请说明它应该做什么,以及它做错了什么。我编辑了这个问题,但简单地说,这个程序应该找到所有4位数字,即前两位和后两位数字之和的平方等于它自己的数字。例如3025。(30+25)^2=3025从标题看,如果你有一个abcd形式的数字,那么你的条件应该是(a+b)*(a+b)=(d+e)*(d+e)=abde.Sqrt(1000)=31.1和Sqrt(9999)=99.9。所以可能比两位数的和大。所以你可能想要(ab+de)^2=abce,循环“while(n!=0)”将永远不会完成,因为您的n=i,在1000..9999范围内是的,我的意思是(ab+cd)^2=abcd。删除“while(n!=0){”和相应的右大括号。避免将double与equals进行比较。您可能会得到意外的结果。当我达到9999时,程序应该停止
i
将永远不会达到9999,因为它在
循环时被卡在
中,因此
for
循环实际上只完成了一次迭代,而且不是完全完成的。您需要进行sur当(n!=0)
在某一点停止时,