Java - como clasificar y contar numero con if-else

 
Vista:
sin imagen de perfil

como clasificar y contar numero con if-else

Publicado por mateo (5 intervenciones) el 31/08/2021 19:30:10
Hola gente como están, estoy empezando mi carrera de programación y tengo un ejercicio que no me ha dejado dormir; mucha gente dice que lo puedo resolver con contadores pero se me pide resolverlo con if-else.

el ejercicio es el siguiente:

Diseñar un algoritmo que me permita ingresar 3 números enteros y contar cuantos números positivos y negativos ingresaron. NOTA: si el usuario ingresa cero no se cuenta.

no se me ocurre como hacer para contar los números, esto me tiene bloqueado. Muchas gracias compañeros
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
sin imagen de perfil

como clasificar y contar numero con if-else

Publicado por mateo (5 intervenciones) el 31/08/2021 19:50:51
miren, hasta aca llevo el codigo, pero no sé como seguir:

package contador;

import javax.swing.JOptionPane;

public class Contador {

static int numero1;
static int numero2;
static int numero3;
static int cero;
static int positivos;
static int negativos;
static int numeros;




public static void main(String[] args) {
numero1 = Integer.parseInt(JOptionPane.showInputDialog("ingrese el primer número "));
if(numero1>0){
numero1 = positivos;
}else
if(numero1<0){
numero1 = negativos;
}else
if(numero1==0){
numero1 = cero;



}

numero2 = Integer.parseInt(JOptionPane.showInputDialog("ingrese el segundo número "));
if(numero2>0){
numero2 = positivos;
}else
if(numero2<0){
numero2 = negativos;
}else
if(numero2==0){
numero2 = cero;



}
numero3 = Integer.parseInt(JOptionPane.showInputDialog("ingrese el tercer número "));
if(numero3>0){
numero3 = positivos;
}else
if(numero3<0){
numero3 = negativos;
}else
if(numero3==0){
numero3 = cero;



}
if(positivos>0){

}

}

}
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: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

como clasificar y contar numero con if-else

Publicado por Kabuto (1381 intervenciones) el 01/09/2021 01:08:02
Los contadores sin variables que usamos para "contar", es decir, cada vez que ocurra un hecho concreto (ingresar un número positivo), incrementamos el valor de ese contador en una unidad.

Así pues, solo necesitas una única variable para recoger el número que introduce el usuario.
Y dos contadores, para contar positivos y negativos.

Se podría resolver así, por ejemplo:
Fíjate que con el número recogido no se suma ni se hace nada, solo se pregunta si es mayor o menor que 0.
Según que condición se cumpla, se incrementará uno de los contadores.
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 Contador {
 
	public static void main(String[] args) {
 
		int entrada; //Para recoger el número introducido por el usuario.
		int contPosi = 0; //Contador de positivos
		int contNega = 0; //Contador de negativos
 
		//Pedimos primer número
		entrada = Integer.parseInt(JOptionPane.showInputDialog("ingrese el primer número "));
		if (entrada > 0) //Positivo
			contPosi = contPosi + 1; //Incrementamos contador
		else if (entrada < 0) //Negativo
			contNega = contNega + 1;
 
		//Segundo número
		entrada = Integer.parseInt(JOptionPane.showInputDialog("ingrese el segundo número "));
		if (entrada > 0)
			contPosi = contPosi + 1;
		else if (entrada < 0)
			contNega = contNega + 1;
 
		//Tercer número
		entrada = Integer.parseInt(JOptionPane.showInputDialog("ingrese el tercer número "));
		if (entrada > 0)
			contPosi = contPosi + 1;
		else if (entrada < 0)
			contNega = contNega + 1;
 
		//Resultados
		JOptionPane.showMessageDialog(null, "Positivos contados: " + contPosi
				+ "\nNegativos contados: " + contNega);
 
	}
 
}

Hay otra forma de incrementar los contadores, con una instrucción más corta. Es de hecho, la que usarás y verás habitualmente.
Hace exactamente lo mismo, solo que con una instrucción más reducida:
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 Contador {
 
	public static void main(String[] args) {
 
		int entrada; //Para recoger el número introducido por el usuario.
		int contPosi = 0; //Contador de positivos
		int contNega = 0; //Contador de negativos
 
		//Pedimos primer número
		entrada = Integer.parseInt(JOptionPane.showInputDialog("ingrese el primer número "));
		if (entrada > 0) //Positivo
			contPosi++; //Incrementamos contador
		else if (entrada < 0) //Negativo
			contNega++;
 
		//Segundo número
		entrada = Integer.parseInt(JOptionPane.showInputDialog("ingrese el segundo número "));
		if (entrada > 0)
			contPosi++;
		else if (entrada < 0)
			contNega++;
 
		//Tercer número
		entrada = Integer.parseInt(JOptionPane.showInputDialog("ingrese el tercer número "));
		if (entrada > 0)
			contPosi++;
		else if (entrada < 0)
			contNega++;
 
		//Resultados
		JOptionPane.showMessageDialog(null, "Positivos contados: " + contPosi
				+ "\nNegativos contados: " + contNega);
 
	}
 
}

Si algo no lo entiendes, solo has de preguntar.

Por cierto, si te fijas, estamos repitiendo las mismas instrucciones por cada número que pedimos. Solo son 3, pero imagina que hubiera que solicitar 10 números, o 300, o los que sean...

Para evitar repetir el mismo código, existe una estructura que son los bucles, que permiten repetir una porción de código tantas veces como se lo pidamos.

Pero quizás no has llegado a esta parte del temario, así que de momento lo dejamos así.

Un saludo.
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
sin imagen de perfil

como clasificar y contar numero con if-else

Publicado por mateo (5 intervenciones) el 01/09/2021 04:28:09
imagino que hablas de while, lo estuve mirando pero aun no sé como utilizarlo. Veo que lo hiciste muy corto y consiso, me gusta; muchas gracias lo estudiare.

te dejo como a la final di para hacerlo:

package contador;

import javax.swing.JOptionPane;

public class Contador {

static int numero1;
static int numero2;
static int numero3;
static int positivos;
static int negativos;




public static void main(String[] args) {
numero1 = Integer.parseInt(JOptionPane.showInputDialog("ingrese el primer número "));

numero2 = Integer.parseInt(JOptionPane.showInputDialog("ingrese el segundo número "));

numero3 = Integer.parseInt(JOptionPane.showInputDialog("ingrese el tercer número "));

positivos = 0;
negativos = 0;

if(numero1>0){
positivos = positivos +1;
if(numero2>0){
positivos = positivos +1;
if(numero3>0){
positivos = positivos +1;
}else{
negativos = negativos +1;
}
}else{
negativos = negativos +1;
if(numero3>0){
positivos = positivos +1;
}else{
negativos = negativos +1;
}
}

}else {
negativos =negativos +1;
if(numero2>0){
positivos = positivos +1;
if(numero3>0){
positivos = positivos +1;
}else{
negativos = negativos +1;
}
}else{
negativos = negativos +1;
if(numero3>0){
positivos = positivos +1;
}else{
negativos = negativos +1;
}
}
}

JOptionPane.showMessageDialog(null,"El numero de enteros positivos es" + positivos);
JOptionPane.showMessageDialog(null,"El numero de enteros negativos es" + negativos);
}



}



Lo hice así porque al pretender hacer los if o if/else si me cumplia una primera condición no me seguía verificando las demás. saben porqué? igual aun cuando no hacía los si anidados
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: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

como clasificar y contar numero con if-else

Publicado por Kabuto (1381 intervenciones) el 01/09/2021 12:36:19
Si quieres hacerlo con tres variables, una para cada número, adelante.
Pero luego evalúalos cada uno por separado.
Tal y como lo has hecho, a parte de que me cuesta leerlo y seguir la lógica (un buen código ha de ser fácil de leer a ojos humanos), fíjate que por ejemplo tienes que preguntar varias veces si el tercer número es positivo para que funcione (si es que funciona...)

Si haces que para poder consultar unas condiciones, dependa de que antes se cumplan otras que son ajenas, todo se complica y por eso tienes que repetir las preguntas.
Es decir, para poder preguntar si el número2 es positivo, no tiene porque depende de que el número1 también lo sea:
1
2
3
if(numero1>0){
positivos = positivos +1;
if(numero2>0){
La pregunta que he marcado en negrita, solo se comprobará si el primer número es positivo, porque es un IF anidado dentro de otro.

Entonces, mejor evaluar cada número por separado, con sus propios IF ELSE separados del resto.


Sobre el bucle.
Sí, hay dos tipos de bucles: el WHILE y el FOR.
En esencia son lo mismo, solo que el FOR es más cómodo de usar cuando sabemos exactamente cuántas veces queremos que algo se repita.
El bucle FOR lo que hace es utilizar su propia variable contador, e incrementarla hasta el límite que le digamos. En cada incremento, repite el código que tenga dentro de su cuerpo.

Te dejo un ejemplo, pero guárdalo para cuando empieces a trabajar con bucles para que te sirva de referencia, por ahora sigue centrándote en los condicionales IF ELSE.

En este código, le digo al bucle que inicie el contador con valor 1, y lo incremente en +1 hasta que alcance el valor 3.
De esta manera, repite 3 veces el código de su cuerpo, que es la petición de un número y su evaluación con IF ELSE.
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
public class Contador {
 
	public static void main(String[] args) {
 
		int entrada; //Para recoger el número introducido por el usuario.
		int contPosi = 0; //Contador de positivos
		int contNega = 0; //Contador de negativos
 
 
		//Pedimos los tres números y evaluamos dentro del bucle
		for (int i = 1; i <= 3; i++) { //Este bucle se repite tres veces
			//Pedimos número
			entrada = Integer.parseInt(JOptionPane.showInputDialog("Entrada (" + i +
					"/3)\nIngrese un número:"));
			//Evaluamos
			if (entrada > 0) //Positivo
				contPosi++; //Incrementamos contador
			else if (entrada < 0) //Negativo
				contNega++;
 
		}
		//Resultados
		JOptionPane.showMessageDialog(null, "Positivos contados: " + contPosi
				+ "\nNegativos contados: " + contNega);
	}
 
}

De esta forma no es necesario repetir líneas de código. Podemos escribirlo una sola vez, y hacer que se repita todas las veces que queramos, solo hay que decirle al FOR las repeticiones que necesitamos.

Un saludo.
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