Reputation: 111
I am trying to do a school work and I'm having problem passing an int array from a method to another as an argument.
My code is:
import java.util.Scanner;
public class Eac4P1_002 {
Scanner scanner = new Scanner(System.in);
//Método main
public static void main (String[] args){
Eac4P1_002 programa = new Eac4P1_002();
programa.inicio();
}
//Método principal
public void inicio() {
presentacion();
intro();
resultado();
}
//Presentación
public void presentacion(){
System.out.println("Hola, bienvenid@ al ejercicio 2!\n"
+ "El programa os pedirá la edad de dos clases, "
+ "en enteros y comprueba si los valores de la segunda clase "
+ "son más grandes que los de la primera.");
}
//Inserción de datos
public void intro(){
System.out.println("De que medida necesitas que sean las clases?");
int medida = scanner.nextInt();
int clase1 [] = new int[medida];
int clase2 [] = new int[medida];
int contador = 0;
int posicion = 1;
System.out.println("Ahora deberás introducir el valor de cada "
+ "posición de la clase inicial.");
while (contador < clase1.length){
System.out.print("Escribe el valor de la posición "+posicion+": ");
clase1[contador] = scanner.nextInt();
contador++;
posicion++;
scanner.nextLine();
}
System.out.println("A continuación debes entrar los valores de la"
+ "segunda clase.");
contador = 0; posicion = 1;
while (contador < clase2.length){
System.out.print("Escribe el valor de la posición "+posicion+": ");
clase2[contador] = scanner.nextInt();
contador++;
posicion++;
scanner.nextLine();
}
}
public void resultado(int[]clase1, int[] clase2){
System.out.println("Analisis de los datos coleccionados.\n");
System.out.println("Colección 1:");
for(int i=0; i < clase1.length; i++ ){
System.out.print(clase1[i]);
}
}
}
I am getting an error in main method when calling resultado(); Is there something I do wrong? I just want to able to use the arrays created in intro() method in resultado() method.
Upvotes: 0
Views: 92
Reputation: 11
If you want to use an array created in intro()
as an input into resultado()
consider adding a return value. public void intro()
could be public int[] intro()
.
public int[] intro(){
System.out.println("De que medida necesitas que sean las clases?");
int medida = scanner.nextInt();
int clase1 [] = new int[medida];
int contador = 0;
int posicion = 1;
System.out.println("Ahora deberás introducir el valor de cada "
+ "posición de la clase inicial.");
while (contador < clase1.length){
System.out.print("Escribe el valor de la posición "+posicion+": ");
clase1[contador] = scanner.nextInt();
contador++;
posicion++;
scanner.nextLine();
}
return clase1;
}
Each time the method is called it will create a new array and return that array. So you could use it twice as input into resultado()
.
resultado( intro() , intro() );
Upvotes: 1
Reputation: 2718
I have refactored your code for you, to split classes read to two methods. From introGetClase1() and introGetClase2() methods, the int[] required for resultado() method is returned.
Arguments are passed to resultado() method
import java.util.Scanner;
public class Eac4P1_002 {
Scanner scanner = new Scanner(System.in);
//Método main
public static void main (String[] args){
Eac4P1_002 programa = new Eac4P1_002();
programa.inicio();
}
//Método principal
public void inicio() {
presentacion();
System.out.println("De que medida necesitas que sean las clases 1?");
int medida = scanner.nextInt();
int[] clase1 = introGetClase1(medida);
int[] clase2 = introGetClase2(medida);
resultado(clase1, clase2);
}
//Presentación
public void presentacion(){
System.out.println("Hola, bienvenid@ al ejercicio 2!\n"
+ "El programa os pedirá la edad de dos clases, "
+ "en enteros y comprueba si los valores de la segunda clase "
+ "son más grandes que los de la primera.");
}
//Inserción de datos
public int[] introGetClase1(int medida){
int clase1 [] = new int[medida];
int contador = 0;
int posicion = 1;
System.out.println("Ahora deberás introducir el valor de cada "
+ "posición de la clase inicial.");
while (contador < clase1.length){
System.out.print("Escribe el valor de la posición "+posicion+": ");
clase1[contador] = scanner.nextInt();
contador++;
posicion++;
scanner.nextLine();
}
return clase1;
}
//Inserción de datos
public int[] introGetClase2(int medida){
int clase2 [] = new int[medida];
int contador = 0;
int posicion = 1;
while (contador < clase2.length){
System.out.print("Escribe el valor de la posición (clases 2)"+posicion+": ");
clase2[contador] = scanner.nextInt();
contador++;
posicion++;
scanner.nextLine();
}
return clase2;
}
public void resultado(int[]clase1, int[] clase2){
System.out.println("Analisis de los datos coleccionados.\n");
System.out.println("Colección 1:");
for(int i=0; i < clase1.length; i++ ){
System.out.print(clase1[i]);
}
}
}
Upvotes: 1
Reputation: 401
your resultado(int[]clase1, int[] clase2) need two parameters.
int[] class1 = {1,2,3,4,5};
int[] class2 = {6,7,8,9,10}
resultado(class1,class2);
Upvotes: -1
Reputation: 13910
because you are not passing anything when you call resultado()
. that method requires an int array passed.
For example:
//Método principal
public void inicio() {
presentacion();
intro();
int[] ar1 = {1,2,3,4,};
int[] ar2 = {2,3,4,5};
resultado(ar1, ar2);
}
Upvotes: 0