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

Java: Variable is already defined in method main

所以我每次尝试编译 .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

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

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

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;
}

如错误所述,您 int max 声明了两次。您需要将第二个更改为变量 assignment,而不是 declaration:

 int max = i;

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