Java - ayuda porfa tengo un problema con un codigo, porque me sale este error

 
Vista:
sin imagen de perfil
Val: 16
Ha aumentado su posición en 5 puestos en Java (en relación al último mes)
Gráfica de Java

ayuda porfa tengo un problema con un codigo, porque me sale este error

Publicado por jose (6 intervenciones) el 08/08/2020 03:06:49
error
porfa ayuda aqui les mando el codigo en un RAR ayudaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa y gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Kabuto
Val: 2.717
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

ayuda porfa tengo un problema con un codigo, porque me sale este error

Publicado por Kabuto (706 intervenciones) el 08/08/2020 11:33:58
Buff.., he descargado tu código.
Muchas clases, y muchos errores.... A ver si conseguimos depurar poco a poco.

Vamos a empezar por el package usuario1

Encontramos la clase Persona.
En su constructor no estás pidiendo la edad, por lo tanto la asignación que haces en la línea 16 no sirve para nada:
1
this.edad = edad;

Sin embargo, en el constructor sí pides un dato de tipo int llamado "identi" que no se corresponde con ningún atributo. Podemos cambiarle su nombre a "edad" y ahora la línea 16 si tendrá utilidad.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
public class Persona{
 
	private String nombre;
	private String apellido;
	private int edad;
	private String genero;
 
	 public Persona(){
 
	 }
	 public Persona(String nombre, String apellido, int edad, String genero){
     this.nombre = nombre;
     this.apellido = apellido;
     this.edad = edad;
     this.genero = genero ;
	 }
	 public String getNombre(){
	 	return nombre;
	 }
	 public void setNombre(String nombre){
     this.nombre = nombre;
	 }
	 public String getApellido(){
	 	return apellido;
	 }
	 public void setApellido(String apellido){
	 	this.apellido = apellido;
	 }
	 public int getEdad(){
	 	return edad;
	 }
	 public void setEdad(int edad){
   		this.edad = edad;
	 }
	 public String getGenero(){
	 	return genero;
	 }
	 public void setGenero(String genero){
	 	this.genero = genero;
	 }
	 public String toString(){
	 	return "(nombre "+ nombre + ",apellido "+ apellido + ",edad "+ edad + ",genero"+ genero +")";
	 }
}

La clase Usuario, ocurre lo mismo. En el constructor no estás pidiendo el dato "gmail", así que la línea 14 no vale para nada.
1
this.gmail = gmail;
Sí pides el dato "indenti", de tipo int, que sigue sin tener ninguna utilidad.
Vamos a borrar este del constructor y pediremos un String para el "gmail".
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public class Usuario extends Persona{
 
	private String nombre1;
	private String gmail;
 
        public Usuario() {}
 
	public Usuario(String nombre1, String apellido, int edad, String genero,String nombre,String gmail){
		super( nombre,  apellido,  edad,  genero);
		this.nombre1 = nombre1;
		this.gmail = gmail;
	}
	public String getNombre1(){
		return nombre1;
	}
	public void setNombre1(String nombre1){
		this.nombre1 = nombre1;
	}
	public String getGmail(){
		return gmail;
	}
	public void setGmail(String gmail){
		this.gmail = gmail;
	}
	public String toString(){
		return super.toString()+ "(nombre" + nombre1 + ",gmail"+ gmail +")";
	}
}

Por útlimo, tienes una clase llamada metododepago, pero es un código apenas comenzado y que además el nombre de la clase no se corresponde con el nombre del archivo java (lo cual es un error).
Supongo que es una clase que finalmente no te fue necesaria, no se... el caso es que es mejor borrar este archivo y no dejar "basura" por ahí tirada.
Así que el archivo metododepago.java recomiendo eliminarlo.


Ahora vamos con el package paquetedeopciones
Solo contiene una clase, llamada Opciones.
Y esta clase (que ahora mismo no se que utilidad tendrá) tiene un atributo de tipo boolean llamado "salir". No estoy seguro de si este atributo tendrá utilidad para la lógica del programa. Ahora mismo desde luego no la tiene, porque tiene un setter, pero no tiene un getter.
Así que podemos darle un valor, pero nunca podremos consultarlo, así que nunca servirá de nada.

De momento, a espera de ver si realmente es necesario, recomiendo darle un método getter.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public class Opciones{
 
	private int opciones;
	private int opcion;
	private boolean salir=false;
 
        public Opciones() {}
 
	public Opciones(int opciones, int opcion){
		this.opciones = opciones;
		this.opcion = opcion;
	}
	public int getOpciones(){
		return opciones;
	}
	public void setOpciones(int opciones){
		this.opciones = opciones;
	}
	public int getOpcion(){
		return opcion;
	}
	public void setOpcion(int opcion){
		this.opcion = opcion;
	}
 
	public void setSalir(boolean salir){
		this.salir = salir;
	}
 
	public boolean getSalir() {
		return salir;
	}
 
}

Continuamos en el siguiente post...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Kabuto
Val: 2.717
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

ayuda porfa tengo un problema con un codigo, porque me sale este error

Publicado por Kabuto (706 intervenciones) el 08/08/2020 12:11:29
Veamos el package opciones
Aquí encontramos otra clase también llamada Opciones, igual que la clase anterior.
Esto es muy desaconsejable, tener en el mismo proyecto clases con el mismo nombre.

Por otra parte, el código es muy parecido al anterior, solo que tiene más atributos de "opciones".
Como aún desconozco la lógica completa del programa, pues no tengo claro si es realmente necesario tener dos clases tan similares.
En fin, esta su atributo boolean "salir" si tiene un getter, así que de momento lo dejamos tal cuál.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
public class Opciones{
 
	private int opciones;
	private int opcion;
	private int opcion1;
	private int opcion2;
	private int opcion3;
	private int opcion4;
	private boolean salir;
 
	public Opciones(){ }
 
	public Opciones(int opciones, int opcion,int opcion1,int opcion2,int opcion3,int opcion4,boolean salir){
		this.opciones = opciones;
		this.opcion = opcion;
		this.opcion1 = opcion1;
		this.opcion2 = opcion2;
		this.opcion3 = opcion3;
		this.opcion4 = opcion4;
		this.salir = salir;
	}
	public int getOpciones(){
		return opciones;
	}
	public void setOpcioens(int opciones){
		this.opciones = opciones;
	}
	public int getOpcion(){
		return opcion;
	}
	public void setOpcion(int opcion){
		this.opcion = opcion;
	}
	public int getOpcion1(){
		return opcion1;
	}
	public void setOpcion1(int opcion1){
		this.opcion1 = opcion1;
	}
	public int getOpcion2(){
		return opcion2;
	}
	public void setOpcion2(int opcion2){
		this.opcion2 = opcion2;
	}
	public int getOpcion3(){
		return opcion3;
	}
	public void setOpcion3(int opcion3){
		this.opcion3 = opcion3;
	}
	public int getOpcion4(){
		return opcion4;
	}
	public void setOpcion4(int opcion4){
		this.opcion4 = opcion4;
	}
	public boolean getSalir(){
		return salir;
	}
	public void setSalir(boolean salir){
		this.salir = true;
	}
 
}

Pasamos al package juegos.

Nos encontramos la clase GenerosTerror y vemos varias cosas que están mal.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
ublic class GeneroTerror{
	private String juego1;
	private String juego2;
	private String juego3;
	public GeneroDeportes(){
 
	}
	public GeneroDeportes(String juego1,String juego2,String juego3){
		this.juego1 = juego1;
		this.juego2 = juego2;
		this.juego3 = juego3;
	}
    public String getJuego1(){
    	return juego1;
    }
    public String getJuego2(){
    	return juego2;
    }
    public String getJuego3(){
    	return juego3;
    }
    public void setJuego1(String juego1){
    	this.juego1 = "resident evil 7";
    }
    public void setJuego2(String juego2){
    	this.juego2 = "five nights at freddy´s";
    }
    public void setJuego3(String juego3){
    	this.juego3 = "dead space";
    }
 
}

Para empezar, el nombre del archivo java es distinto al nombre de la clase, hay una letra "s" de diferencia.
GenerosTerror es distinto de GeneroTerror.
O añadimos una "s" al nombre de la clase, o se la quitamos al nombre del archivo .java. Yo optaría por esto último.

Luego, el constructor por error pone GeneroDeporte.. y no GeneroTerror

Y los setter se están utilizando para dar unos valores concretos, en lugar de asignar el valor que recibe su parámetro.
Si quieres asignar valores concretos por defecto, debes usar el constructor "vacío" que no recibe parámetros. Nunca se deben usar los setters de esa manera.
La clase corregida quedaría así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
public class GeneroTerror{
	private String juego1;
	private String juego2;
	private String juego3;
 
	public GeneroTerror(){
		juego1 = "resident evil 7";
		juego2 = "five nights at freddy´s";
		juego3 = "dead space";
	}
 
	public GeneroTerror(String juego1,String juego2,String juego3){
		this.juego1 = juego1;
		this.juego2 = juego2;
		this.juego3 = juego3;
	}
	public String getJuego1(){
		return juego1;
	}
	public String getJuego2(){
		return juego2;
	}
	public String getJuego3(){
		return juego3;
	}
	public void setJuego1(String juego1){
		this.juego1 = juego1;
	}
	public void setJuego2(String juego2){
		this.juego2 = juego2;
	}
	public void setJuego3(String juego3){
		this.juego3 = juego3;
	}
 
}

Luego viene la clase GeneroDeportes.
Esta clase está correcta. Quizás se hecha en falta que su constructor "vacío" también inicialice los atributos con unos títulos de juegos prefijados como ha hecho la clase anterior. Pero bueno, eso es un tema secundario.
Por lo demás, esta clase se queda como está:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public class GeneroDeportes{
	private String juego1;
	private String juego2;
	private String juego3;
 
	public GeneroDeportes(){ }
 
	public GeneroDeportes(String juego1,String juego2,String juego3){
		this.juego1 = juego1;
		this.juego2 = juego2;
		this.juego3 = juego3;
	}
	public String getJuego1(){
		return juego1;
	}
	public String getJuego2(){
		return juego2;
	}
	public String getJuego3(){
		return juego3;
	}
	public void setJuego1(String juego1){
		this.juego1 = juego1;
	}
	public void setJuego2(String juego2){
		this.juego2 = juego2;
	}
	public void setJuego3(String juego3){
		this.juego3 = juego3;
	}
 
}

La clase GeneroAventuras. En esta lo único que hay que corregir son los nombres de los constructores, porque los has escrito con la primer letra en minúscula --> generoAventuras

Al no coincidir con el nombre de la clase, el compilador no sabe que esos son los constructores y piensa que son métodos mal definidos porque no tienen tipo de dato de retorno.
Simplemente hay que corregir los nombres y listo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public class GeneroAventuras{
	private String juego1;
	private String juego2;
	private String juego3;
 
	public GeneroAventuras(){ }
 
	public GeneroAventuras(String juego1,String juego2,String juego3){
		this.juego1 = juego1;
		this.juego2 = juego2;
		this.juego3 = juego3;
	}
	public String getJuego1(){
		return juego1;
	}
	public String getJuego2(){
		return juego2;
	}
	public String getJuego3(){
		return juego3;
	}
	public void setJuego1(String juego1){
		this.juego1 = juego1;
	}
	public void setJuego2(String juego2){
		this.juego2 = juego2;
	}
	public void setJuego3(String juego3){
		this.juego3 = juego3;
	}
 
}

Ahora viene la clase GeneroAccion.
En esta, se te ha olvidado poner que los atributos son de tipo String y el punto y coma para cerrar las líneas

Luego, en los setter setJuego2() y setJuego3(), el nombre del parámetro que recibe por paréntesis, que son para ambos has puesto juego1, no se corresponden con el nombre que usas dentro del método, que es juego2 y juego3.
Esto hace que no se esté asignando correctamente el valor recibido por parámetro.
Hay que corregirlo también.
La clase queda así:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public class GeneroAccion{
	private String juego1;
	private String juego2;
	private String juego3;
 
	public GeneroAccion(){ }
 
	public GeneroAccion(String juego1,String juego2,String juego3){
		this.juego1 = juego1;
		this.juego2 = juego2;
		this.juego3 = juego3;
	}
	public String getJuego1(){
		return juego1;
	}
	public String getJuego2(){
		return juego2;
	}
	public String getJuego3(){
		return juego3;
	}
	public void setJuego1(String juego1){
		this.juego1 = juego1;
	}
	public void setJuego2(String juego2){
		this.juego2 = juego2;
	}
	public void setJuego3(String juego3){
		this.juego3 = juego3;
	}
 
}


Continuamos en el siguiente post....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 16
Ha aumentado su posición en 5 puestos en Java (en relación al último mes)
Gráfica de Java

ayuda porfa tengo un problema con un codigo, porque me sale este error

Publicado por jose (6 intervenciones) el 09/08/2020 04:50:03
wow muchas gracias amigo me salvaste, encerio muchas gracias!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Kabuto
Val: 2.717
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

ayuda porfa tengo un problema con un codigo, porque me sale este error

Publicado por Kabuto (706 intervenciones) el 08/08/2020 12:54:54
Ya solo nos quedan tres clases:
- MenuGeneros.java
- NuevosJuegos.java
- Principal.java

Lo primero que me he fijado, es que los tres tienen un método main().
Tener tres métodos main(), significa tener tres programas distintos. Tres programas que se ejecutan por separado y no se relacionan entre ellos.
¿Es eso lo que quieres?

En fin. MenuGeneros y NuevosJuegos no tienen errores de sintaxis en el código. Si veo algún fallo de lógica y que habría que modular el código (anidar un switch dentro de otro es confuso y puede llevar a errores). Pero como son programas que no estén terminados y que aún no tengo claro que se quiere hacer con ellos, de momento no los comentaremos.

Vamos a la clase Principal, que si hay mucho que comentar.

Para empezar, has puesto que Principal hereda de la clase Usuario. Esto no provoca ningún error, pero no le veo ningún sentido. Las relaciones de herencia no están para esto, a no ser que haya un motivo inimaginable para mí y que tu puedas explicarme.

El primer error de código que vemos está en la línea 83 y viene precisamente por lo que comentaba antes.
Estas anidando switchs y en la línea 83 hay un "case 1" que está dentro del mismo ámbito que el "case 1" de la línea 22.
Por lo tanto el compilador se queja de que hay dos cases iguales.

Lo mismo ocurre con el case 2 de la línea 213, se solapa con el que hay en la línea 140.
Y no son los únicos.

Para evitar esto hay que "modular" el código, separarlo en métodos donde cada uno se encargue de una tarea específica y tenga su propio ámbito de trabajo para no solaparse con otros.
Un método que se encargue de pedir los datos para la membresía, otro método que se encargue de los juegos de accion, otro para los juego de deporte, etc...

Luego estás usando variables que no han sido declaradas en ningún sitio: borrador, opcion2, opcion3, opcion4, opcion5....
Estos son los errores que se muestran en la imagen que publicaste.

Al margen de esto, hay cosas que no son errores de código, pero si de lógica. Más que errores, son cosas que no tienen sentido.

Por ejemplo utilizas distintos ArrayList para almacenar una serie de mensajes.
Luego los recorres y muestras esos mensajes:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
ArrayList<String> datosdeusuario = new ArrayList<String>();
datosdeusuario.add("tu nombre es:"+" "+usuario1.getNombre());
datosdeusuario.add("tu apellido es:"+" "+usuario1.getApellido());
datosdeusuario.add("tu edad es:"+" "+usuario1.getEdad());
datosdeusuario.add("tu genero es:"+" "+usuario1.getGenero());
datosdeusuario.add("");
for (String i :datosdeusuario) {
    System.out.println(i);
}
System.out.println();
ArrayList<String>datosdeusuario1 = new ArrayList<String>();
datosdeusuario1.add("los datos de tu perfil que podran ver otros usuarios");
datosdeusuario1.add("nombre de usuario es:"+" "+usuario1.getNombre1());
datosdeusuario1.add("tu correo electronico es:"+" "+usuario1.getGmail());
for (String f :datosdeusuario1) {
    System.out.println(f);
}

¿Por qué? ¿Por qué no mostrar esos mensaje directamente con System.out.println() en lugar de emplear colecciones de datos como ArrayList?
No le veo sentido y el resultado es un programa que desperdicia recursos del sistema.


A partir de aquí, se me hace difícil ayudarte si no explicas, con claridad y detalle, en que consiste el programa. Que ya me hago una idea, pero necesito detalles.
Necesito saber que tiene que hacer la clase Principal, si realmente quieres tres programas distintos o en realidad lo que vayan a hacer las clases MenuGeneros y NuevosJuegos también ha de ocurrir cuando ejecutamos la clase Principal.
Necesito detalles de que como han de ser los menús, que opciones ofrecen, que ha de ocurrir con cada opción...

A ver si conseguimos arrojar luz ante este embrollo.

Por último, solo mencionar que la mayoría de errores que he comentado en estos tres mensajes, te los habrías evitado si usar algún IDE como NetBeans, Eclipse o similar, pues sin necesidad de compilar nada, ya te habrían avisado de dichos fallos en tiempo real mientras escribías el código.
Si te es posible, no dudes en usar algún editor de este tipo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar