李家小少爷 2016-09-13 13:32 采纳率: 0%
浏览 3311

新人求助,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条回答 默认 最新

  • badgerYo 2016-09-13 13: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

    评论

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料