【问题标题】:Java: Variable is already defined in method mainJava:变量已在方法 main 中定义
【发布时间】:2015-02-05 00:16:11
【问题描述】:

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

“错误:变量 max 已在方法 main(String[]) 中定义 整数最大值 = 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

【问题讨论】:

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


    【解决方案1】:

    正如错误所说,您已经声明了两次 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;
       }
     }
    

    【讨论】:

      【解决方案2】:

      您只需要在您需要的最高范围内声明一次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;
      }
      

      【讨论】:

      • 是的,我想换一个,谢谢你的帮助!
      猜你喜欢
      • 2022-06-22
      • 1970-01-01
      • 2021-12-18
      • 2021-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-21
      • 1970-01-01
      相关资源
      最近更新 更多