2 qq 36114862 qq_36114862 于 2016.09.13 21:32 提问

新人求助,eclipse中显示程序没有错误,缺没有输出结果咋回事?

package com.baidu;

public class HelloWorld {

public static void main(String[] args) {
    // TODO Auto-generated method stub

int a=0,b=0,c=0,d=0,sum=0;
for(int i=0;i<100;i++){
for(int j=1000;j<10000;j++){
a=j-1000;
b=(j-a*1000)/100;
c=(j-a*1000-b*100)/10;
d=j-a*1000-b*100-c*10;
sum=a*1000+b*100+c*10+d;
if(a==b&&c==d&&sum==i*i){
System.out.println("这四位数是:"+sum);
}

}
}
}

}

3个回答

sinat_34693148
sinat_34693148   2016.09.13 21:52

写程序出错问问题一定要说清楚你的目的是什么,需要得到什么结果,达到什么目的。
根据你的程序猜测你的目的是找出一个四位数,四位数的前两位相等,后两位数相等。并且这个四位数是一个两位数的平方。
如果你的程序确实是要达到这样一个目的。那么,说说你的问题:
1-你采用双重for循环没错,但是没必要把对1000到10000的数循环也放进双重for里面,这样把从1000到10000的每个数的运算实现了一百遍,而事实上一遍就可以了。
2-sum=a*1000+b*100+c*10+d; 这一步是得到了操作的这个四位数,原数据。你这个sum数据不就是循环里面的 j 吗?

把你的程序优化了一下:

public class Test{
public static void main(String[] args) {

    for (int i = 1000; i < 10000; i++) {
        int a = i / 1000;
        int b = (i - 1000 * a) / 100;
        int c = (i - 1000 * a - 100 * b) / 10;
        int d = i % 10;

        for (int j = 0; j < 100; j++) {
            if (a == b && c == d && i == j * j) {
                System.out.println(i);
                System.out.println(j);
            }
        }
    }
}

}

得到结果 7744 而且这个二位数是88

oSanYeCao1234567
oSanYeCao1234567   Ds   Rxr 2016.09.15 11:22

这个for循环写错了吧:for(int j=1000;j<10000;j++) 根本就没有走进去,所以也就没有打印啦

u010218087
u010218087   2016.09.22 20:41

a=j-1000
这里应该是除以吧,还有就是可以用%运算
int a = 9874;
// 千位
int b = a / 1000;
// 百位
int c = (a % 1000) / 100;
// 十位
int d = (a % 100) / 10;
//个位
int e = a % 10;
System.out.println(b + "--" + c + "--" + d + "--" + e);

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!