我不知道为什么这不起作用

时间:2015-11-05 15:37:50

标签: java

我在Java上为Euler做了这个,它只是一遍又一遍地打印0。我不知道我做错了什么,请帮忙吗?

class Euler 
{

  public static void main (String[]args) 
  {
    int a = 0;
    int b = 0;
    int c = 0;
    int d = 0;
    int e = 0;
    int f = 0;
    int palindrome = 0;
    boolean run = true;
    while (run == true) {
      for (int f4 = 999; f4 >= 100; f4--) {
        for (int f5 = f4; f5 >= 100; f5--) {
          palindrome = f4 * f5;
          f = (palindrome % 10);
          e = (palindrome % 100 - f);
          d = (palindrome % 1000 - e);
          c = (palindrome % 10000 - d);
          b = (palindrome % 100000 - c);
          a = (palindrome % 1000000 - b);
          if (a == 0) {
            if ((b == f) && (c == e)) {
              run = false;
            }
          } else {
            if ((a == f) && (b == e) && (c == d)) {
              run = false;
            }
          }
        }
      }
    int[] nums = new int[1];
    nums[0] = palindrome;
  {
    System.out.println(Arrays.toString(nums));
  }
}
  }
}

它应该找出由两个三位数字的乘积组成的最大回文。

1 个答案:

答案 0 :(得分:3)

您的循环从不输入。当你说,

for (int f4 = 999; f4 == 100; f4--) {

999不是== 100,因此会跳过循环。我想你想要

for (int f4 = 999; f4 >= 100; f4--) {

与下一个循环相同的问题。

for (int f5 = f4; f5 >= 100; f5--) { // <-- not == 100