Cómo hacer una matriz creada dentro de un bucle de trabajo fuera de ella?

Gustavo Azevedo Correa:

Estoy haciendo un proyecto java para probar diferentes algoritmos de ordenación y es necesario utilizar diferentes mecanografiada del vector.

Determino el tipo de vector whithin el código, así que necesito para declarar que dentro de un bucle. Esta es la generación de un error porque del alcance de la matriz. ¿Hay alguna forma de hacer algo similar o resolver este error?

Estoy en eclipse de 2020, aquí está el código que genera el error:

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 ++;
}

Y aquí es un ejemplo de una de las funciones 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;
Matt:

La primera cuestión que se está preguntando por un margen. Tiene que declarar la variable de alcance para seguir adelante.

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

Esto tendría que ser cambiado porque estás declarando sus matrices dentro de los bloques y si éstos se perderán una vez que salga del bloque if. es decir, que ir fuera de su alcance.

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

Esto pondrá organizedVectoren un ámbito más amplio y se puede utilizar después de las sentencias if , pero no se puede asignar a un flotador [], por lo que la segunda sentencia if fallará. Considere la pervivencia de una List<Integer>, List<Float>, List<Double>que son todos List<? extends Comparable>.

A continuación, puede comparar los elementos, y les intercambiar con collections.swap según sea necesario. Tenga en cuenta que las matrices primitivas no son intercambiables. Vas a tener que escribir tres bloques diferentes de código para manejar los tres tipos de matrices diferentes.

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=374783&siteId=1
Recomendado
Clasificación