2015-09-05 84 views
0

目标是找到乘以两个三位数字所产生的最大数字回文。无法返回变量。 “java:找不到变量”

public static void main (String[]args) 
{ 
    ArrayList<Integer> answers = new ArrayList<Integer>(); 
    int temp = 0; 
    int result = 0; 
    for (int i = 100; i <= 999; i++){ 
     for (int z = 100; z <= 999; z++){ 
      int prod = i * z; 
      result = pal(prod); 
      answers.add(result); 
     } 
    } 
    int answer = Collections.max(answers); 
    System.out.println(answer); 
} 

public static int pal(int n){ 
    String temp2 = String.valueOf(n); 
    for (int i = 0; i < temp2.length()/2; i++){ 
     if (temp2.charAt(i) != temp2.charAt(temp2.length()-1-i)) { 
      int palindrome = Integer.parseInt(temp2); 
      return palindrome; 
     } 
    } 
    return palindrome; 
} 
} 

回答

0

palindrome是不可见的外循环的if语句在pal

public static int pal(int n){ 
    String temp2 = String.valueOf(n); 
    for (int i = 0; i < temp2.length()/2; i++){ 
     if (temp2.charAt(i) != temp2.charAt(temp2.length()-1-i)) { 
      int palindrome = Integer.parseInt(temp2); // defined here 
      return palindrome; 
     } 
    } 
    // palindrome is not defined here 
    // return something else instead 
    return palindrome; 
} 
0

移动回文变量为return语句可见块。就像这样:

public static void main (String[]args) 
    { 
     ArrayList<Integer> answers = new ArrayList<Integer>(); 
     int temp = 0; 
     int result = 0; 
     for (int i = 100; i <= 999; i++){ 
      for (int z = 100; z <= 999; z++){ 
       int prod = i * z; 
       result = pal(prod); 
       answers.add(result); 
      } 
     } 
     int answer = Collections.max(answers); 
     System.out.println(answer); 
    } 

    public static int pal(int n){ 
     int palindrome; //You could place it here. 
     String temp2 = String.valueOf(n); 
     for (int i = 0; i < temp2.length()/2; i++){ 
      if (temp2.charAt(i) != temp2.charAt(temp2.length()-1-i)) { 
       palindrome = Integer.parseInt(temp2); 
       return palindrome; 
      } 
     } 
     return palindrome; 
    } 
    } 

检查:Block scope variables

编辑:

初始化变量,否则你会得到一个错误。

0

除了Reut Sharabani的回答之外,您还希望每次调用pal时都要返回提供给您的pal方法的int n。

if (temp2.charAt(i) != temp2.charAt(temp2.length()-1-i)) { //if it is not a palindrome 
    int palindrome = Integer.parseInt(temp2); //you return it 
    return palindrome; 
} 

这意味着您将所有测试的数字添加到您的ArrayList中。

我建议将方法的返回类型更改为布尔值,因此您可以根据数字是否是回文返回true或false。然后,检查pal(n)== true是否为真,如果是,则将其添加到ArrayList。