Estoy viendo clases encapsuladas en Java, y tengo que crear un programa que al terminar de solicitarme los datos haga los cálculos y me pregunte si quiero volver a calcular todo de nuevo.
La cosa es: Si funciona, pero cuando respondo que si deseo continuar capturando más datos se salta la primer pregunta de datos() y omite preguntarme el nombre...
Para que me comprendan dejo aqui el código que he hecho en total:
Clase ENCAPSULADA llamado Nadador.java:
Código:
Clase Principal, llamada PruebaNadador.java:/* Nadador.java public class Nadador { private String Nombre; private byte Londres; private byte Sydney; private byte Atenas; private byte Pekin; public String getNombre( ){ return this.Nombre; } public void setNombre(String Nombre){ this.Nombre = Nombre; } public byte getLondres( ){ return this.Londres; } public void setLondres(byte Londres){ this.Londres = Londres; } public byte getSydney( ){ return this.Sydney; } public void setSydney(byte Sydney){ this.Sydney = Sydney; } public byte getAtenas( ){ return this.Atenas; } public void setAtenas(byte Atenas){ this.Atenas = Atenas; } public byte getPekin( ){ return this.Pekin; } public void setPekin(byte Pekin){ this.Pekin = Pekin; } }
Código:
import java.util.Scanner; import java.io.*; import static java.lang.Math.*; public class PruebaNadador { int Suma,Promedio; Nadador s = new Nadador(); Scanner x = new Scanner(System.in); void inicio() { System.out.println("\n\nSistema para obtener el promedio de medallas ganadas por un nadador en varias olimpiadas\n\n"); } void datos (Nadador n){ System.out.print("Escriba el nombre del nadador:\n"); n.setNombre(x.nextLine()); System.out.print("Indique la cantidad de medallas ganadas en Londres:\n"); n.setLondres ( x.nextByte()); System.out.print("Indique la cantidad de medallas ganadas en Atenas:\n"); n.setAtenas ( x.nextByte()); System.out.print("Indique la cantidad de medallas ganadas en Pekin:\n"); n.setPekin ( x.nextByte()); System.out.print("Indique la cantidad de medallas ganadas en Sydney:\n"); n.setSydney ( x.nextByte()); } void calculos(Nadador z){ Suma = s.getLondres() + s.getAtenas() + s.getPekin() + s.getSydney(); Promedio = Suma /4; } void resultado() { System.out.println("El Nadador: " + s.getNombre() + "tiene nn promedio de " +Promedio+ " medallas ganadas en 4 juegos Olimpicos"); } public static void main(String[] args) throws IOException { PruebaNadador w = new PruebaNadador(); int resp = 'S'; w.inicio(); while (resp == 's' || resp == 'S'){ w.datos(w.s); w.calculos(w.s); w.resultado(); System.out.print("Desea evaluar el promedio de medallas de otro nadador olimpico? S/N:"); resp = System.in.read(); System.in.skip(2); } } }
Yo creo que mi problema está aquí:
Código:
¿Alguien que pudiera orientarme por favor, ? public static void main(String[] args) throws IOException { PruebaNadador w = new PruebaNadador(); int resp = 'S'; w.inicio(); while (resp == 's' || resp == 'S'){ w.datos(w.s); w.calculos(w.s); w.resultado(); System.out.print("Desea evaluar el promedio de medallas de otro nadador olimpico? S/N:"); resp = System.in.read(); System.in.skip(2); } }