问题是:
程序提示用户输入六个正整数的列表, 然后声明一个包含六个元素的数组。该程序应该排序 列表的元素按升序排列。另外,该计划 应显示原始列表和排序列表。
我的代码是:
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错误
虽然我已经初始化了
答案 0 :(得分:4)
int min;
您尚未初始化min
。我可以看到你在min = i ;
循环中已经完成了for
,但这仍然是有条件的(for
可能并不总是执行,比如在这种情况下,数组是空的)那就是编译器说的原因。您需要使用默认值
int min = 0;
或在任何if
或for
之外为其指定一些值,或在该情况下为任何条件声明。
答案 1 :(得分:1)
int min;
给它一个初始值。
int min = 0;
答案 2 :(得分:0)
您在for
循环内初始化min。编译器无法知道sList
是否为空。如果为空,则不会运行初始化代码。这就是为什么它抱怨变量可能没有被初始化。
您应事先将min
初始化为某个值。
开头说,min
声明后的第一个for循环没有任何意义:min
总是等于sList.length-1
然后(和i
会是sList.length
。你应该重新考虑你的逻辑。
答案 3 :(得分:0)
即使不需要(目前),也应该对所有块使用大括号 - 否则它会变得笨重。此外,您并不真正需要i
和min
,但我将其留在了。
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] + " ");
}
}
}