首页 > 解决方案 > 如何使在循环内创建的数组在其外部工作?

问题描述

我正在做一个 java 项目来测试不同的排序算法,并且需要使用不同类型的向量。

我在代码中确定了向量的类型,所以我需要在循环中声明它。由于数组的范围,这会产生错误。反正有没有做类似的事情或解决这个错误?

我在 eclipse 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;

标签: java

解决方案


您要问的第一个问题是范围。您需要使用范围声明变量才能继续。

if(TypeOfVector(desorganized) == -1) {
    int[] organizedVector = PassingToIntVector(desorganized);
}
if(TypeOfVector(desorganized) == 0) {
    float[] organizedVector = PassingToFloatVector(desorganized);
}

这需要更改,因为您在 if 块中声明数组,一旦离开 if 块,它们就会丢失。即他们超出范围。

int[] organizedVector;
if(TypeOfVector(desorganized) == -1) {
    organizedVector = PassingToIntVector(desorganized);
}
if(TypeOfVector(desorganized) == 0) {
    organizedVector = PassingToFloatVector(desorganized);
}

这将放在organizedVector更大的范围内,您可以在 if 语句之后使用它,不能将其分配给 float[],因此第二个 if 语句将失败。考虑坚持使用List<Integer>, List<Float>,List<Double>这些都是List<? extends Comparable>.

然后您可以比较元素,并根据需要将它们与 collections.swap 交换。请注意,原始数组不可互换。您必须编写三个不同的代码块来处理三种不同的数组类型。


推荐阅读