Java - Porque no me funciona el FOR

 
Vista:

Porque no me funciona el FOR

Publicado por Daniel (1 intervención) el 14/10/2018 01:08:40
Hola, estoy haciendo este ejercicio
Solicite al usuario el número n de valores de temperaturas tomadas (debe ser mayor que
0). Luego pida las n temperaturas y devuelva el número de veces que ésta tiene un valor inferior a
los cero grados y la temperatura media.
y tengo que hacerlo utilizando cadenas FOR y do while y lo tengo hecho de la siguiente manera.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
if(opcion==2){
    System.out.println("*************TEMPERATURAS*************");
    do{
        System.out.print("Introduzca numero de temperaturas(POSITIVO): ");
        numt= sc.nextInt();
 
        for(numt2= 1;numt2>numt;numt2 = numt2 +1){
            System.out.print("Temperatura número "+numt2+" : ");
            temp=sc.nextDouble();
            if(temp>=0){
                tempTotal= tempTotal+temp;
            }else{
                tempNoValidas=tempNoValidas+1;
            }
        }
        System.out.println("Ha introducido "+tempNoValidas+" temperaturas inferiores a 0");
        System.out.println("La temperatura media es: "+(tempTotal/numt));
 
    }
    while(numt>0);

pero cuando entra al for y pongo un numero mayor que 0 entra en bucle y no se como solucionarlo
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: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Porque no me funciona el FOR

Publicado por Kabuto (1381 intervenciones) el 14/10/2018 02:28:10
1
2
3
numt= sc.nextInt();
 
for(numt2= 1;numt2>numt;numt2 = numt2 +1){

En la primera linea pides el dato, vamos a suponer que introducen un 10
Es decir, numt == 10

OK, ahora vamos a evaluar la condicion del for

Decimos que numt2 comienza con valor 1.
for(numt2= 1;numt2>numt;numt2 = numt2 +1)

Y decimos que el bucle ha de ejecutarse MIENTRAS que numt2 sea mayor que num1
for(numt2= 1;numt2>numt;numt2 = numt2 +1)


El problema es que esto no se cumple. Porque numt, que hemos dicho que vale 10, es mayor que numt2, que solo vale 1
Es decir, esto ---> numt2 > numt; equivale a ----> 1 > 10 ----> esto es FALSE. Por ello, ese bucle FOR jamás se ejecuta.

Has de establecer otra condicion, probablemente la que te conviente es que el for se repita MIENTRAS numt2 sea menor o igual que numt
1
2
3
numt= sc.nextInt();
 
for(numt2 = 1; numt2 <= numt; numt2 = numt2 +1){

De este modo, numt2 ira aumentando de 1 en 1 y el bucle for se irá iterando hasta que numt2 supere a numt, que es quien marca el límite.
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 Geraldine
Val: 53
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Porque no me funciona el FOR

Publicado por Geraldine (25 intervenciones) el 14/10/2018 03:30:25
No lo hice con el metodo while, pero así es como yo lo haría solo con el método if y for. Espero te sirva.

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
package Ptemperatura;
import java.util.Scanner;
 
public class CalTemp {
    //Atributos:
    static Scanner teclado = new Scanner(System.in);
 
    public static void main(String[] args) {
        //Solicitamos la cantidad de temperaturas a procesar:
        System.out.print("Ingrese la cantidad de temperaturas: ");
        int cantTemp = teclado.nextInt();
 
        int[] vector = new int[cantTemp];
        double tempTotal = 0;
        int tempNoValidas = 0;
 
        //Creamos un ciclo for para repetir los datos segun la cantidad de temperaturas:
        for (int i = 0; i < cantTemp; i++) {
            System.out.println("Ingrese la temperatura numero " + (i+1) + ": ");
            vector[i] = teclado.nextInt();
        }
        //Devolvemos el número de veces que ésta tiene un valor inferior a 0:
        for (int i = 0; i < cantTemp; i++) {
            tempTotal += vector[i];
            //
            if (vector[i] < 0) {
                tempNoValidas = tempNoValidas + 1;
            }
        }
        System.out.println("Ha introducido "+tempNoValidas+" temperaturas inferiores a 0");
        System.out.println("La temperatura total es: " + tempTotal);
 
        //Calculamos y mostramos la temperatura media:
        System.out.println("La temperatura media es: "+(tempTotal/cantTemp));
    }
}
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