Java - No consigo resolverlo

 
Vista:

No consigo resolverlo

Publicado por hoffman (1 intervención) el 30/07/2019 18:29:05
como nuevo en esto, no consigo resolver el problema que me da este codigo, al poner un numero ,por ejemplo 100 me saca solo resultados hasta la mitad (en este caso 50) nunca llega a cero, estaria muy agradecido si me ayudaran a solucionarlo.Gracias.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import java.util.Scanner;
public class probador{
public static void main(String args[]){
Scanner valor=new Scanner(System.in);
System.out.println("un numero");
int i=1,num=0;
num=valor.nextInt();
 System.out.println("primera serie");
  for(i=1;i<=num;i++){
if(i<99){
System.out.print(i+",");
System.out.print(num+",");
     }else {
        System.out.print(i+",");
        System.out.print(num);
     }
      num--;
   }System.out.println("");
}
}
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: 755
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

No consigo resolverlo

Publicado por Yamil Bracho (2315 intervenciones) el 30/07/2019 18:39:15
Estas disminuyendo el limite superior que usaste en el loop y el indice va incrementando. Tu condicion es i <= num asi que llega el momento en que i > num
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

Posible solucion

Publicado por Jose Manuel (1 intervención) el 30/07/2019 19:16:55
El problema es en el loop, hay un punto en que ambas variables (i), (num) se igualan y termina el loop, la solución que te daría es cambiar la variable (num) en el for y poner "100" de esta manera el resultado seria el deseado

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import java.util.Scanner;
public class probador{
    public static void main(String args[]){
        Scanner valor=new Scanner(System.in);
        System.out.println("un numero");
        int i=1,num=0;
        num=valor.nextInt();
        System.out.println("primera serie");
        for(i=1;i<=100;i++){
 
            if(i<99){
                System.out.print(i+",");
                System.out.print(num+",");
            }else {
                System.out.print(i+",");
                System.out.print(num);
            }
            --num;
        }System.out.println("");
    }
}
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
Val: 186
Ha disminuido su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

Posible solucion

Publicado por Juan (70 intervenciones) el 31/07/2019 13:32:53
lo que dice jose manuel esta bien, pero deberias usar una variable aux en lugar de 100. porque no siempre sera 100. depende de lo que introduzcas por teclado. y en el if que imagino que es para no imprimir la coma en el ultimo caso, en lugar de 99 colocar num-1.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.util.Scanner;
public class probador{
   public static void main(String args[]){
        Scanner valor=new Scanner(System.in);
        System.out.println("un numero");
        int i=1,num=0,aux=0;
        num=valor.nextInt();
        aux=num;
        System.out.println("primera serie");
        for(i=1;i<=num;i++){
             if(i<(num-1)){
                  System.out.print(i+",");
                  System.out.print(aux+",");
             }else {
                  System.out.print(i+",");
                  System.out.print(aux);
             }
             aux--;
        }
        System.out.println("");
   }
}
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