2017-02-27 9 views
0

私は学校で仕事をしようとしていますが、メソッドから別のメソッドにint配列を渡す際に問題があります。引数として1つのメソッドから別のメソッドに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を呼び出すときに、私は)(mainメソッドでエラーを取得しています。 何か問題がありますか?私は、resultado()メソッドでintro()メソッドで作成された配列を使用できるようにしたいだけです。

+1

何かを返して渡したり、インスタンスフィールドに保存したり、引数を取ったりしないでください。 – Mordechai

+0

私に例を挙げてください。 –

+0

コードをリファクタリングしました。私の答えを確認してください。 –

答えて

1

私は2つの方法を読んで、クラスを分割するために、あなたのためにあなたのコードをリファクタリングしています。 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

答えに間違いがありますか?ネガティブな投票者がコメントしてください! –

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)2つのパラメータが必要です。

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

あなたはresultado()への入力としてintro()で作成された配列を使用したい場合は、戻り値を追加することを検討してください。 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()への入力として2回使用することができます。

resultado(intro() , intro()); 
関連する問題