将int数组从一个方法传递给另一个方法作为参数

时间:2017-02-27 01:35:39

标签: java

我正在尝试做一项学校工作,我遇到问题将一个int数组从一个方法传递给另一个方法作为参数。

我的代码是:

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]);
                }
    }
}

调用resultado()时,我在main方法中遇到错误; 有什么我做错了吗?我只想在resultado()方法中使用intro()方法中创建的数组。

4 个答案:

答案 0 :(得分:1)

我已经为你重构了你的代码,将类读取分为两种方法。 从introGetClase1()和introGetClase2()方法,返回resultado()方法所需的int []。

将参数传递给resultado()方法

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]);
        }
    }
}

答案 1 :(得分:1)

如果要将intro()中创建的数组用作resultado()的输入,请考虑添加返回值。 public void intro()可以是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;
}

每次调用该方法时,它都会创建一个新数组并返回该数组。因此,您可以将其用作resultado()的两次输入。

resultado( intro() , intro() );

答案 2 :(得分:0)

因为您在致电resultado()时没有传递任何内容。该方法需要传递一个int数组。

例如:

//Método principal
    public void inicio() {
        presentacion();
        intro();

        int[] ar1 = {1,2,3,4,};
        int[] ar2 = {2,3,4,5};
        resultado(ar1, ar2);
}

答案 3 :(得分:-1)

你的resultado(int [] clase1,int [] clase2)需要两个参数。

 int[] class1 = {1,2,3,4,5};
 int[] class2 = {6,7,8,9,10}
 resultado(class1,class2);