打印水仙花 为什么该代码不能输出结果

public class a {
	public static void main(String[] args) {
		int a =1 ;
		int b = 1  ;
		int c = 1  ;
		int num =  a*a*a + b*b*b+c*c*c;
		int num1 = a*100+ b*10 + c;
		for(a=1;a<9;a++) {
			for(b=1;b<9;b++) {
				for(c=1;c<9;c++) {
					if( num1 <1000 && num1 > 100 && num1 == num) {
						System.out.println(num1);
					}
				}
			}
		}

}
}

 

你的代码可以这样修改

  public static void main(String[] args) {
    for (int a = 1; a < 9; a++) {
      for (int b = 0; b < 9; b++) {
        for (int c = 0; c < 9; c++) {
          int num = a * a * a + b * b * b + c * c * c;
          int num1 = a * 100 + b * 10 + c;
          if (num1 < 1000 && num1 > 100 && num1 == num) {
            System.out.println(num1);
          }
        }
      }
    }
  }

 

但是建议这样写:

  public static void main(String[] args) {
    for (int i = 100; i < 1000; i++) {
      int a = i % 10;
      int b = i / 10 % 10;
      int c = i / 100;
      if (a * a * a + b * b * b + c * c * c == i) {
        System.out.println(i);
      }
    }
  }

 

你在循环外计算了num和num1,在循环内并没有更新二者的值,所以永远不会有结果,这么多循环就判断了一个111是不是水仙花数。

num 和 num1 需要每一次循环后更新。放在循环外就更新不了。if判断就一直是false。所以走不到输出那里去,就不会打印了

这种问题就不要贴出来。一看debug都没debug过。要培养自己寻找问题的能力,而不是答案

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632