Java:变量已在方法main中定义

时间:2015-02-05 00:16:11

标签: java sorting if-statement for-loop compiler-errors

每次我尝试编译.java文件时都会出现以下错误

"错误:变量max已在方法main(String [])中定义                 int max = j; "

我还没有弄清楚问题是什么或如何解决。现在已经坚持了大约2个小时。我试图最终做的是在我的数组中输入一个整数,并将该整数中的数字从最小到最大排序以提供上下文。

以下是我的代码中的相关部分:

   int[] wholeNumber = new int[1];


   //Sorting algorithm beginning
   int n = wholeNumber.length;

   System.out.println("Length of array is :" + n); //Array length displayed

   for(int i = 0; i < 1; i++)
   {
     System.out.println("Hello!");

     int max = i;

     for(int j = i+1; j < 1; j++)
     {
       if (wholeNumber[j] > wholeNumber[max])
       {  
          int max = j;
       }

     }
     if (max != i)
     {
        wholeNumber[i] = wholeNumber[max];
        wholeNumber[max] = wholeNumber[i];
     }



   }
   //Sorting algorithm end

2 个答案:

答案 0 :(得分:0)

您只需要在您需要的最高范围内声明int max一次。从int语句中删除if关键字;这将把它变成赋值语句而不是声明语句。

顺便说一句,这句话毫无意义:

if (max != i)  {
   wholeNumber[i] = wholeNumber[max];
   wholeNumber[max] = wholeNumber[i];
}

wholeNumber[i]将设置为wholeNumber[max]中的任何内容,然后您尝试将其重新设置为wholeNumber[max]。你可能会进行交换,这需要(在这种情况下)第三个变量:

if (max != i)  {
   int swp = wholeNumber[i];
   wholeNumber[i] = wholeNumber[max];
   wholeNumber[max] = swp;
}

答案 1 :(得分:0)

如错误所示,您已int max声明了两次。您需要将第二个更改为变量赋值,而不是声明

 int max = i;

 for(int j = i+1; j < 1; j++)
 {
   if (wholeNumber[j] > wholeNumber[max])
   {  
      max = j; // NOT: int max = j;
   }
 }