グスタボ・アゼベド・コレア:
私は別のソートアルゴリズムをテストするために、Javaプロジェクトをやってるし、ベクトルの異なる型付きを使用するために必要とされます。
私はループ内に宣言する必要があるので、私は、コードwhithinベクトルの種類を決定します。これは、配列の範囲のエラーを生成しています。類似またはこのエラーを解決する何かを作るためにとにかくありますか?
私は日食2020上だし、ここでエラーが発生しているコードは次のとおりです。
if(TypeOfVector(desorganized) == -1) {
int[] organizedVector = PassingToIntVector(desorganized);}
if(TypeOfVector(desorganized) == 0) {
float[] organizedVector = PassingToFloatVector(desorganized);}
if(TypeOfVector(desorganized) == 1) {
double[] organizedVector = PassingToDoubleVector(desorganized);}
int organized = 0;
int duo;
int n = desorganized.size();
while(organized != n-1) {
organized = 0;
for (duo = 0; duo < n - 1; duo ++) {
if(organizedVector[duo] > organizedVector[duo + 1]) {
organizedVector[duo] = organizedVector[duo] - organizedoVector[duo +1];
organizedVector[duo +1] = organizedVector[duo + 1] + organizedVector[duo];
organizedVector[duo] = organizedVector[duo + 1] - organizedVector[duo];
}
else organized ++;
}
そして、ここでPassingToの機能の一つの例です。
public float[] PassingToFloatVector(ArrayList<Object> list) {
Object[] array = list.toArray();
float[] desorganized = new float[list.size()];
for(int i = 0; i < list.size(); i++) {
desorganized[i] = (float) array[i];
}
return desorganized;
マット:
あなたはおよそ求めているという最初の問題は、スコープです。あなたは続行するためにスコープを使用して変数を宣言する必要があります。
if(TypeOfVector(desorganized) == -1) {
int[] organizedVector = PassingToIntVector(desorganized);
}
if(TypeOfVector(desorganized) == 0) {
float[] organizedVector = PassingToFloatVector(desorganized);
}
あなたがもし、ブロック内のあなたの配列を宣言していると、彼らは失われますので、あなたがもしブロックを離れるとこれを変更する必要があります。つまり彼らは、スコープの外に行きます。
int[] organizedVector;
if(TypeOfVector(desorganized) == -1) {
organizedVector = PassingToIntVector(desorganized);
}
if(TypeOfVector(desorganized) == 0) {
organizedVector = PassingToFloatVector(desorganized);
}
これは入れますorganizedVector
、より大きな範囲で、あなたはif文の後にそれを使用することができますが、あなたはフロートにそれを割り当てることはできません[]、その文は失敗します場合は、2番目。固執考えてみましょうList<Integer>
、List<Float>
、List<Double>
すべてですList<? extends Comparable>
。
その後、要素を比較し、必要に応じてcollections.swapでそれらを交換することができます。プリミティブ配列は交換できませんので注意してください。あなたは、3つの異なる配列型を処理するコードの三つの異なるブロックを記述する必要があります。