Tengo el siguiente código que contiene un método para establecer e imprimir valores de una matriz:

int n;

// this is a method for get and set value of array
public static int[] avali(int n) { 

    System.out.println("insert number");

    Scanner num = new Scanner(System.in);
    int a1[] = new int[n];
    for (int i = 0; i < n; i++) {

        a1[i] = num.nextInt();

    }

    return a1;
}

//method of inverse array
public void dovomi(int[] a) {

    for (int i = n; i > 0; i--) {

        System.out.println(a);
    }

 }

public static void main(String[] args) {
    System.out.println("insert arr size: ");
    Scanner n = new Scanner(System.in);
    JavaApplication17 x = new JavaApplication17();
    x.avali(n.nextInt());
    x.dovomi(a1);

}

¿Cómo puedo llamar a este método con la matriz como argumento? ¿Por qué no puedo acceder a a1 de esta manera?

-3
aryanbj 2 ene. 2017 a las 01:11
El error está en la última línea (x.dovomi (a1);)
 – 
aryanbj
2 ene. 2017 a las 01:12
1
Realice el Tour y aprenda a crear un MCVE . En su estado actual, su pregunta no está relacionada con el tema de este sitio.
 – 
Hermann Döppes
2 ene. 2017 a las 01:23

2 respuestas

Su método dovomi y main tienen algunos errores, debe corregirlos para ejecutar su programa:

El segundo método debe ser static también n la variable no está definida dentro del alcance del método, en su lugar, puede usar a.length para obtener el tamaño de la matriz:

   public static void dovomi(int[] a) {

    for (int i = a.length-1; i >= 0; i--) {

        System.out.println(a[i]);
    }
   }

El método main también debe definir la matriz y poner la matriz de retorno del método avali dentro de ella para imprimir los resultados del método dovomi:

 public static void main(String[] args) {
    System.out.println("insert arr size: ");
    Scanner n = new Scanner(System.in);
    int size = n.nextInt();
    int[] a1=new int[size];
    a1=avali(size);
    dovomi(a1);
}
0
Oghli 2 ene. 2017 a las 02:21

Debe comprender el concepto de valores devueltos.

Algunos métodos no devuelven ningún valor. Están marcados con void. Y otros lo hacen. Están marcados con cualquier tipo de valor que devuelvan.

Ejemplos de métodos que no devuelven un valor incluyen System.out.println(), dovomi, main, etc.

Por otro lado, n.nextInt devuelve un valor.

¿Puedes ver cómo n.scan se usa de manera diferente a System.out.println?

x.avali(n.nextInt());
// vs
System.out.println("Hi");

n.nextInt() se puede pasar a un método como parámetro, pero System.out.println no. ¿Por qué? ¡Porque n.nextInt() devuelve un valor ! Básicamente, los métodos que devuelven un valor se pueden usar como valores para que pueda pasarlos como parámetros, asignarlos a variables, llamar a otros métodos sobre ellos ...

Ahora, ¿por qué no puede acceder a a1?

Debido a que a1 está declarado en el alcance de avali, no puede acceder a él fuera de avali. Sin embargo, a1 es devuelto por avali:

return a1;

Entonces puede crear una nueva variable y asignarle el valor de retorno de avali:

int[] a1 = x.avali(n.nextInt());

¡Ahora esta línea se compila!

x.dovomi(a1);
0
Sweeper 2 ene. 2017 a las 03:58