Autor Tema: java error required found reason actual and formal argument lists differ in leng  (Leído 2918 veces)

dharhuu

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 4
    • Ver Perfil
Hola, estoy intentando hacer este programa:

Código: [Seleccionar]
import java.util.*;
public class progclassarrayprueba2
{
   public static void main(String args[])
   {
     
     
      Scanner in=new Scanner(System.in);
     
      int n=3;
     
      classarrayX unir= new classarrayX();
      System.out.println("ingreso los datos : ");
     
      for(int i=1;i<=n;i++)//
      {
        int  leer=in.nextInt(); //
         unir.ingreso(leer,i);//
      }
       
      System.out.println("la solucion es :  ");
       
      unir.parimpar(n);//
   }
}

---------------------------------------------------

Código: [Seleccionar]
class classarrayX  {
   int leer;
 
   public void ingreso(int x){
      leer=x;
                                   }
   
   public void parimpar(int n)                {
      int j=0;//contador
      int k=0;//contador
      for(int i=1;i<=n;i++)
      {
         if(leer%2==0) {//
            j++;
                       }
         
         if(leer%2!=0) {//
            k++;
                       }
      }
      System.out.println("numero pares "+j);
      System.out.println();
      System.out.println("numero impares "+k);
                                               }
}


Cuando compilo el  primero, pues no presenta error, pero al compilar class progclassarrayprueba2 me sale este error:

unir.ingreso(leer,i);//llama a la clase void ingreso
             ^
  required: int
  found: int,int
  reason: actual and formal argument lists differ in length
1 error


Agradezco su ayuda, por favor :/
« Última modificación: 05 de Agosto 2020, 18:36 por Ogramar »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 866
    • Ver Perfil
Re:ayuda en mi codigo
« Respuesta #1 en: 23 de Septiembre 2019, 21:21 »
Citar
me sale este error:
unir.ingreso(leer,i);//llama a la clase void ingreso

Ese error significa que el método ingreso() está programado para recibir un int por paréntesis.

Código: [Seleccionar]
  public void ingreso(int x){
      leer=x;
                                   }

Pero tú le estás pasando dos: leer e i

Quita la i del paréntesis, no puede aceptarla y además no la necesita.
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

settezza

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 9
    • Ver Perfil
Re:ayuda en mi codigo
« Respuesta #2 en: 23 de Septiembre 2019, 23:55 »
Lo mismo que kabuto, el método ingreso(int x) solo requiere una variable pero estás enviando dos : unir.ingreso(leer,i).
Como recomención en este caso
Código: [Seleccionar]
if(leer%2==0) {//
            j++;
                       }
         
         if(leer%2!=0) {//
            k++;
                       }
podrias hacer lo siguiente ya que si %2 es distinto de 0 no hay para que usar otro if
Código: [Seleccionar]
if(leer%2==0{
   j++;
}else{
   k++;
}
no recuerdo bien la nomenclatura de java pero la idea es esa

dharhuu

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 4
    • Ver Perfil
Re:ayuda en mi codigo
« Respuesta #3 en: 24 de Septiembre 2019, 08:21 »
Gracias, a los dos por responder, el programa ya corre .
Pero da mal el resultado, pongo 2 3 1 , y me dice que todos son impares, y así probando con cualquier número siempre es impar

settezza

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 9
    • Ver Perfil
Re:ayuda en mi codigo
« Respuesta #4 en: 24 de Septiembre 2019, 09:27 »
Hola, pasa que al momento de declarar la variable n la estás inicializando con el valor 3
Código: [Seleccionar]
Scanner in=new Scanner(System.in);     
int n=3;
Despues al método parimpar le envías n como parámetro, pero no veo que n cambie de valor
Código: [Seleccionar]
unir.parimpar(n);//Siempre estás evaluando el número 3, prueba cambiar el valor de n por un número par.
Además estás utilizando n para la condición del for() quizás sea mejor cambiar el nombre por alguno mas descriptivo para que no te confundas mientras aprendes lo fundamental, por ejemplo nIngresos para la condición del for.
Analiza cual es la variable que debes pasar al método parimpar() y en qué lugar debe estar la llamada a ese método


dharhuu

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 4
    • Ver Perfil
Re:ayuda en mi codigo
« Respuesta #5 en: 26 de Septiembre 2019, 23:13 »
Código: [Seleccionar]
import java.util.*;
public class progclassarrayprueba2
{
   public static void main(String args[])
   {
     
     
      Scanner in=new Scanner(System.in);
     
      int numero=3;
     
      classarrayX unir= new classarrayX();
      System.out.println("ingreso los datos : ");
     
      for(int i=0;i<3;i++)
      {
        int  leer=in.nextInt();
         unir.ingreso(leer);
      }
       
      System.out.println("la solucion es :  ");
       
      unir.parimpar(numero);
   }
}


Y la clase pura.

Código: [Seleccionar]
class classarrayX  {
   int leer;
 
   public void ingreso(int x){
      leer=x;
                                   }
   
   public void parimpar(int leyendo)                {
      int j=0;//contador
      int k=0;//contador
      for(int i=1;i<=leyendo;i++)
      {
         if(leer%2==0) {//par
            j++;
                       }
         
          else {//impar
            k++;
                       }
      }
      System.out.println("numero pares "+j);
      System.out.println();
      System.out.println("numero impares "+k);
                                               }
}

Como estoy analizando 3 números, si mi ultimo número es impar, me dice que los 3 son impares

Pero si mi ultimo número es un par, me dice que los 3 son pares.

Este tema de objetos y clases es nuevo para mí, no sé en dónde pueda estar el error.
« Última modificación: 05 de Agosto 2020, 18:38 por Ogramar »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 866
    • Ver Perfil
Re:ayuda en mi codigo
« Respuesta #6 en: 27 de Septiembre 2019, 23:07 »
Tienes diversos errores, el principal es que las variables j y k que usas como contadores, se reinician a 0 cada vez que invocas al método parImpar().

Y además, en la variable "leer" solo tienes un número. Da igual si pides 3 números, o si pides 300... solo vas a tener almacenado el último número leído.

Si quieres almacenar varios números, necesitas poner un array.

Sin embargo, en realidad no necesitas ningún array. Si lo que quieres es una clase que evalúe números introducidos por el usuario y luego te diga cuántos pares e impares ha encontrado, solo necesitas crear una clase con dos atributos: uno para contar pares y otro para contar impares.

Y que tenga dos métodos, uno para evaluar números y otro para que muestre en pantalla cuantos pares e impares lleva contados.
Algo así:

Código: [Seleccionar]
public class CuentaParesImpares {

private int pares;
private int impares;

public CuentaParesImpares() {
pares = 0;
impares = 0;
}

public void parImpar(int numero) {
if (numero %2 == 0)
pares++;
else
impares++;
}

public void resultados() {
System.out.println("Pares encontrados: " + pares);
System.out.println("Impares encontrados: " + impares);
}

}

Y se puede poner a prueba en este main:

Código: [Seleccionar]
public class Test {

public static void main(String[] args) {
CuentaParesImpares cpi = new CuentaParesImpares();
Scanner teclado = new Scanner(System.in);

//Pedimos 5 numeros
for (int i = 0; i < 5; i++) {
System.out.print("Introduzca número: ");
cpi.parImpar(teclado.nextInt());
}

//Mostramos resultado
System.out.println("\nResultados:");
cpi.resultados();

teclado.close();
}

}

Y tenemos este resultado en pantalla:
Código: [Seleccionar]
Introduzca número: 2
Introduzca número: 12
Introduzca número: 3
Introduzca número: 30
Introduzca número: 1

Resultados:
Pares encontrados: 3
Impares encontrados: 2


Esta es una solución prescindiendo de un array, ya que como vemos, no es necesario.
Puede que el enunciado de tu ejercicio te pida usar un array, entonces sí habría que enfocarlo de otro modo.
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

dharhuu

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 4
    • Ver Perfil
Re:ayuda en mi codigo
« Respuesta #7 en: 30 de Septiembre 2019, 05:16 »
Citar
Esta es una solución prescindiendo de un array, ya que como vemos, no es necesario.
Puede que el enunciado de tu ejercicio te pida usar un array, entonces sí habría que enfocarlo de otro modo.


Código: [Seleccionar]
import java.util.*;
public class progclassarray
{
   public static void main(String args[])
   {
      int [] A = new int [20];
     
      Scanner in=new Scanner(System.in);
     
      System.out.print("ingrese numero de elemntos a evaluar  : ");
      int n=in.nextInt();
     
      classarray unir= new classarray();
      System.out.println("ingreso los datos : ");
     
      for(int i=1;i<=n;i++)
      {
         A[i]=in.nextInt();
         unir.ingreso(A[i],i);
      }
       
      System.out.println("la solucion es :  ");
       
      unir.parimpar(n);
   }
}

------------------------------------------

Código: [Seleccionar]
class classarray  {
   int []A=new int [20];
   
   public void ingreso(int x,int i){
      A[i]=x;
                                   }
   
   public void parimpar(int n)                {
      int j=0;
      int k=0;
      for(int i=1;i<=n;i++)
      {
         if(A[i]%2==0) {
            j++;
                       }
         
         if(A[i]%2!=0) {
            k++;
                       }
      }
      System.out.println("numero pares "+j);
      System.out.println();
      System.out.println("numero impares "+k);
                                               }
}


Este era el ejemplo que me dieron, y si era con un array, y yo tenia que hacerlo sin usar uno.

Gracias por la ayuda, saludos.
« Última modificación: 05 de Agosto 2020, 18:39 por Ogramar »

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".