0

問題は :

プログラムは、ユーザーに 6 つの正の整数のリストを入力するように求め、次に 6 つの要素の配列を宣言します。プログラムは、リストの要素を昇順にソートする必要があります。さらに、プログラムは元のリストと並べ替えられたリストの両方を表示する必要があります。

私のコードは次のとおりです。

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 が初期化されていない可能性があります if (sList[j] < sList[min] ) ^ q2.java:27: 変数 min が初期化されていない可能性があります sList[i]=sList[min]; ^ 2 エラー

私はすでにそれを初期化している間

4

4 に答える 4

4
int min;

を初期化していませんmin。ループで実行min = i ;したことがわかりますが、それはまだ条件付きです(常に実行されるとは限りません。たとえば、配列が空である場合など)。そのため、コンパイラはそう言います。デフォルト値で初期化する必要がありますforfor

int min = 0;

ifまたは、またはfor、またはその場合の条件文の外側で何らかの値を代入します。

于 2013-11-13T05:07:19.730 に答える
1
int min;

初期値を与えます。

int min = 0;
于 2013-11-13T05:07:21.117 に答える
0

forループ内で min を初期化します。sListコンパイラは が空かどうかわかりません。空の場合、初期化コードは実行されません。そのため、変数が初期化されていない可能性があると不平を言っています。

min事前に何らかの値に初期化する必要があります。

そうは言っても、 の宣言の後の最初の for ループは意味がありminません:minは常に then と等しくなりますsList.length-1(そしてiになりますsList.length。ロジックを再考する必要があります。

于 2013-11-13T05:07:35.350 に答える