2017-02-27 94 views
0

我想做一個學校的工作,我有一個問題從一個方法傳遞一個int數組作爲參數。將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, [email protected] 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()時,我的主要方法得到一個錯誤; 有什麼我做錯了嗎?我只想在resultado()方法中使用intro()方法中創建的數組。

+1

要麼返回一些東西,並將其傳遞或保存在實例字段中,不要帶參數。 – Mordechai

+0

你能舉個例子嗎? –

+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, [email protected] 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]); 
     } 
    } 
} 
+0

請解釋你做了什麼,而不是隻提供一段代碼。 –

+1

提供了說明。 –

+0

答案有什麼問題嗎?,Nagative選民請評論!! –

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

您resultado(INT [] clase1,INT [] clase2)需要兩個參數。

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

如果你想使用intro()創建數組作爲輸入到resultado()考慮增加一個返回值。可以是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()); 
相關問題