Java - Ciclo For Java

 
Vista:
Imágen de perfil de Mauricio Juan
Val: 8
Ha aumentado su posición en 4 puestos en Java (en relación al último mes)
Gráfica de Java

Ciclo For Java

Publicado por Mauricio Juan (3 intervenciones) el 25/05/2020 06:30:27
javafor
Buenas
Empece a programar hoy en java y tuve un problema inusual con el ciclo for

Lo que sucedió es que cree un for para sacar el 5% del precio de cada auto vendido, pero cuando hago la operación
comision5=comision5+(precioauto*div) donde div vale 1/20 osea 0.05, me devuelve 0, no entiendo por que. Alguien podría ayudarme?

Por las dudas, le asigno 1/20 a div y recién lo multiplico, por que si pongo 0.05 me da un error que no se corregirlo.
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
Val: 7
Ha aumentado su posición en 5 puestos en Java (en relación al último mes)
Gráfica de Java

Ciclo For Java

Publicado por Ruben (1 intervención) el 25/05/2020 07:51:45
Hola Mauricio, te comento la manera correcta de inicializar un valor Float es poner al final del numero la letra f, por ejemplo en tu caso seria 0.05f, lo demás de tu código esta correcto, me imagino que ese era tu problema, de todas maneras te dejo el código corregido para que veas como te quedaría.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public static void main(String[] args) throws Exception {
	Scanner entrada = new Scanner(System.in);
 
	int mensual = 1000, comision = 150, autosvendidos, comisionfinal;
	float precioauto, salariofinal, comision5 = 0, div=0.05f; // Aqui se inicializa
 
	System.out.print("Ingrese la cantidad de autos vendidos\n");
	autosvendidos = entrada.nextInt();
 
 
	for(int i=0;i<autosvendidos; i++){
		System.out.print("Ingrese el valor del auto "+(i+1)+"\n"); // Debes sumar uno para que no muestre auto 0
		precioauto = entrada.nextFloat();
		comision5 += precioauto * div; // Esta es una forma corta de operar
	}
	comisionfinal = autosvendidos * 150;
	salariofinal = mensual + comisionfinal + comision5;
	System.out.print("El salario final del vendedor es de: " + salariofinal);
 
}

Y este seria el resultado

concesionario
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Rodrigo
Val: 2.041
Plata
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ciclo For Java

Publicado por Rodrigo (622 intervenciones) el 25/05/2020 16:43:32
En java (y varios otros lenguajes) existe clausura con operandos de tipo int.
Esto significa que si operas 2 int el resultado sera int. No importa si el resultado lo asignas a un int, float. etc, esto no cambia el que 2 int generaran un int.

Si a y b son int

a+b es int
a-b es int
a*b es int
a/b es int

1/20 es un caso de estos.

Si a es menor que b, a/b sera 0, si a es mayor que b, a/b sera la parte entera de la division.

Para forzar que el resultado sea float, hay varias posibilidades

1. Hacer que al menos 1 de los valores (si son explicitos, como es tu caso) sea float, haciendo aparecer ".0" para indicar float.

1.0 / 20
1 / 20.0

2. Hacer que ambos sean float de manera explkcita

1.0 / 20.0

3. Si se trata de variables y no podemos agregar el ".0", se puede forzar la conversion al tipo float
Cualquiera de estas opciones funcionara como necesitas.

(float) a / b
a / (float) b
(float) a / (float) b
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar