变量尚未初始化,而我已经做过了

时间:2013-11-13 05:04:56

标签: java arrays

问题是:

  

程序提示用户输入六个正整数的列表,   然后声明一个包含六个元素的数组。该程序应该排序   列表的元素按升序排列。另外,该计划   应显示原始列表和排序列表。

我的代码是:

import java.util.*;

public class q2 {
    static Scanner scan = new Scanner (System.in);
    public static void main (String[] args ) {
     int i;
int [] fList = new int [6];
int [] sList = new int [6];

 System.out.println ("Enter 6 positive integers :");

 for ( i=0 ; i<fList.length ;i++)
 fList[i]=scan.nextInt();

  for( i=0 ; i<fList.length ; i++)//to copy
  fList=sList;

 int min;
 {
 for ( i=0;i<sList.length ; i++)//sort
 min = i ; 
  for (int j=i+1 ; i<sList.length ; i++)
  if (sList[j] < sList[min] )
   min=j;

    int temp=sList[i];
    sList[i]=sList[min];
    sList[min]=temp;
 }

 System.out.println("Original array : ");
 for ( i=0 ; i < fList.length ; i++)
 System.out.println(fList[i] + " ");

 System.out.println();
 System.out.println("Array after sorting :");
 for ( i=0 ; i < sList.length ; i++)
 System.out.println(sList[i] + " ");

}
}

它说:

  

q2.java:23:如果变量min可能尚未初始化   (sList [j]&lt; sList [min])                          ^ q2.java:27:变量min可能尚未初始化sList [i] = sList [min];                          ^ 2错误

虽然我已经初始化了

4 个答案:

答案 0 :(得分:4)

int min;

您尚未初始化min。我可以看到你在min = i ;循环中已经完成了for,但这仍然是有条件的(for可能并不总是执行,比如在这种情况下,数组是空的)那就是编译器说的原因。您需要使用默认值

对其进行初始化
int min = 0;

或在任何iffor之外为其指定一些值,或在该情况下为任何条件声明。

答案 1 :(得分:1)

int min;

给它一个初始值。

int min = 0;

答案 2 :(得分:0)

您在for循环内初始化min。编译器无法知道sList是否为空。如果为空,则不会运行初始化代码。这就是为什么它抱怨变量可能没有被初始化。

您应事先将min初始化为某个值。

开头说,min声明后的第一个for循环没有任何意义:min总是等于sList.length-1然后(和i会是sList.length。你应该重新考虑你的逻辑。

答案 3 :(得分:0)

即使不需要(目前),也应该对所有块使用大括号 - 否则它会变得笨重。此外,您并不真正需要imin,但我将其留在了。

import java.util.*;

public class q2 {
    static Scanner scan = new Scanner(System. in );
    public static void main(String[] args) {
        int i;
        int[] fList = new int[6];
        int[] sList = new int[6];

        System.out.println("Enter 6 positive integers :");

        for (i = 0; i < fList.length; i++) {
            fList[i] = scan.nextInt();
        }

        //to copy
        for (i = 0; i < fList.length; i++) {
            fList = sList;
        }

        //sort
        for (i = 0; i < sList.length; i++) {
            int min = i;
            for (int j = i + 1; i < sList.length; i++) {
                if (sList[j] < sList[min])
                    min = j;

                int temp = sList[i];
                sList[i] = sList[min];
                sList[min] = temp;
            }
        }

        System.out.println("Original array : ");
        for (i = 0; i < fList.length; i++) {
            System.out.println(fList[i] + " ");
        }

        System.out.println();
        System.out.println("Array after sorting :");
        for (i = 0; i < sList.length; i++) {
            System.out.println(sList[i] + " ");
        }

    }
}