[ Foro de Java ]
me imprime 0 en lugar del mayor ?¿que hago?soy prinipiante
package NumMayor;
public class NumMayor {
int resultado;
public void numMayor(int a, int b , int c, int d ,int e) {
if (a>b){
if (a>c){
if (a>d){
if (a>e)
{
this. resultado=a;
//return resultado;
}
}
}
else{
if (b>a){
if(b>c){
if(b>d){
if(b>e){
this.resultado=b;
//return resultado;
}
}
}
}
else{
if (c>a){
if (c>b){
if (c>d){
if (c>e){
resultado=c;
//return resultado;
}
}
}
}
else{
if (d>a){
if(d>b){
if (d>c){
if (d>e){
this. resultado =d;
//return resultado;
}
}
}
}
else{
if(e>a){
if (e>b){
if (e>c){
if (e>d){
this.resultado=e;
//return resultado;
}
}
}
}
}
}
}
}
}//fin-if
}
public void mostrarResultados(){
System.out.println("el numero mayor es:" + resultado);
}
public static void main (String [] args){
Scanner sc= new Scanner(System.in);
System.out.println("Introduce el primer numero: ");
int num1= sc.nextInt();
System.out.println("Introduce el segundo numero: ");
int num2= sc.nextInt();
System.out.println("Introduce el tercer numero: ");
int num3= sc.nextInt();
System.out.println("Introduce el cuarto numero: ");
int num4= sc.nextInt();
System.out.println("Introduce el quinto numero: ");
int num5= sc.nextInt();
NumMayor nm = new NumMayor();
nm.numMayor(num5, num5, num5, num5, num5);
nm.mostrarResultados();
}
}
Te tiro una idea, que es mas simple y evita que se armen ese chorizo de comparaciones, que te podes enredar muy facil...
Guarda el mayor en una variable. Por ejemplo
public void numMayor(int a, int b , int c, int d ,int e) {
int mayor= a; (siempre empezamos comparando con el a)
if(mayor<b) // si valor guardado en variable "mayor" es MENOR a b --> es lo mismo que decir si a<b
//porque le asignamos ese valor previamente.
{
mayor = b; // el mayor es b
}
if(mayor <c) // si valor guardado en variable "mayor" es MENOR a c
{
mayor = c; // el mayor es c
}
if(mayor <d) // si valor guardado en variable "mayor" es MENOR a d
{
mayor = d; // el mayor es d
}
if(mayor <e) // si valor guardado en variable "mayor" es MENOR a e
{
mayor = e; // el mayor es e
}
// en caso de que no se cumpla la condición en alguno de los if, SIEMPRE va a guardar el valor anterior.
// Osea, si el valor de "a" es de entrada el numero mayor, NUNCA se va a sobrescribir ese valor porque
// ningun if cumple el requisito, por ende te va devolver el valor de "a". Si en algun punto alguno es
// mayor, se va a sobreescribir y ese va a ser el nuevo valor a comparar para los proximos if...
return mayor;
}
// Espero haber sido de ayuda.
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)