Java - Problema con ciclo Do While.

 
Vista:
sin imagen de perfil
Val: 7
Ha disminuido su posición en 239 puestos en Java (en relación al último mes)
Gráfica de Java

Problema con ciclo Do While.

Publicado por Gaston (4 intervenciones) el 08/06/2020 19:38:39
Hola a todos mi nombre es Gastón y tengo 40 años, y recién estoy empezando y aprendiendo a programar, estoy haciendo todo por mi propia cuenta, se que no es lo mejor pero es lo que puedo hacer ya que no puedo pagar por ahora cursos ó profesores.
Les cuento esto por que se que cuando vean mi pregunta quizás sea muy tonta, pero a mi su ayuda me va a ayudar mucho de verdad.
mi pregunta es la siguiente:
Estoy haciendo en java (uso block de notas y despues lo compilo y lo ejecuto en cmd, no uso por ahora un entorno de desarrollo integrado por que no llegue a eso) un ciclo Do While para que pregunte al usuario si quiere continuar o salir del programa.
Lo que me pasa es que cuando al ciclo le agrego una variable de valor entero, el programa falla, directamente salta la parte en donde pide y guarda la respuesta del usuario, pero ahora si no le agrego una variable entera, funciona bien.
Les dejo las dos formas para ver si me pueden ayudar, y desde ya muchas gracias a todos!!!.

Forma en que funciona:

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 DoWhile{
  public static void main(String args[]){
 
    Scanner in = new Scanner(System.in);
    String pregunta = "";
    String salir = "s";
    int a = 0;
 
    do{
      System.out.print("hola como estas?");
      System.out.println("");
      System.out.println("ingresa un numero");
 
      System.out.print("deseas continuar? s ó n:");
      pregunta = in.nextLine();
 
    }while(pregunta.equalsIgnoreCase(salir));
  }
}

Forma en la que no funciona solo agregando un valor entero:

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 DoWhile{
  public static void main(String args[]){
 
    Scanner in = new Scanner(System.in);
    String pregunta = "";
    String salir = "s";
    int a = 0;
 
    do{
      System.out.print("hola como estas?");
      System.out.println("");
      System.out.println("ingresa un numero");
      a = in.nextInt();
      System.out.print("deseas continuar? s ó n:");
      pregunta = in.nextLine();
 
    }while(pregunta.equalsIgnoreCase(salir));
  }
}
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 Franklin
Val: 456
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problema con ciclo Do While.

Publicado por Franklin (179 intervenciones) el 08/06/2020 20:13:31
no tengo mucha práctica con la lectura por scanner, pero creo que es habitual el error con scanner.nextInt();

has intentado a = Integer.parseInt(in.nextLine());
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: 7
Ha disminuido su posición en 239 puestos en Java (en relación al último mes)
Gráfica de Java

Problema con ciclo Do While.

Publicado por Gaston (4 intervenciones) el 08/06/2020 20:35:06
Muchísimas gracias!!! ahí me funciono, podrías explicarme por que sucede esto, osea cada vez que quiera utilizar de esta forma el Do While debo utilizar solo en los enteros con: = Integer.parseInt(in.nextLine());, sabrías encaminarme un poco sobre este problema?.
y desde ya muchísimas gracias por tu tiempo y ayuda!!!.
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

Problema con ciclo Do While.

Publicado por Kabuto (1381 intervenciones) el 08/06/2020 20:34:17
Como dice Franklin, siempre que hagas una lectura de valores numéricos con nextInt() (también nextFloat(), nextDouble(), etc...), si luego quieres leer un String con nextLine(), esa lectura va a fallar sí o sí.

Puedes evitarlo con la solución que te ha dado Franklin.
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: 7
Ha disminuido su posición en 239 puestos en Java (en relación al último mes)
Gráfica de Java

Problema con ciclo Do While.

Publicado por Gaston (4 intervenciones) el 08/06/2020 20:38:55
Muchas gracias!!! esto solo sucede dentro de un ciclo?, en cualquier otro ciclo sucede lo mismo ó solo con el Do While?.
Gracias!!!.
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 Franklin
Val: 456
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problema con ciclo Do While.

Publicado por Franklin (179 intervenciones) el 08/06/2020 21:04:37
Creo que no tiene nada que ver el ámbito, sea un for, while, do while, etc. Sino del scanner en sí.
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: 7
Ha disminuido su posición en 239 puestos en Java (en relación al último mes)
Gráfica de Java

Problema con ciclo Do While.

Publicado por Gaston (4 intervenciones) el 08/06/2020 21:12:09
muchas gracias!!!!!!!!!!
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