Java - Introducir una cadena vacia

 
Vista:

Introducir una cadena vacia

Publicado por Jorge (1 intervención) el 14/10/2018 12:06:07
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
37
38
39
40
41
42
43
44
/*Calcular las calificaciones de un grupo de alumnos.
La nota final de cada alumno se calcula según el siguiente
criterio: la parte práctica vale el 10%; la parte de problemas
vale el 50% y la parte teórica el 40%. El algoritmo leerá el
nombre del alumno, las tres notas, escribirá el resultado y
volverá a pedir los datos del siguiente alumno hasta que el
nombre sea una cadena vacía. Las notas deben estar entre
0 y 10, si no lo están, no imprimirá las notas, mostrará un
mensaje de error y volverá a pedir otro alumno.*/
 
import java.util.Scanner;
public class Copia15
{
    public static void main(String[] args){
        String alumno, comparacion;
        Scanner t= new Scanner(System.in);
        double practica, problemas, teoria, npra, npro, nteo, nota;
        System.out.print("Introduzca el nombre del alumno: ");
        alumno= t.next();
        comparacion=null;
        while(!alumno.equals(" ")){
            System.out.print("Introduzca su nota practica: ");
            practica= t.nextDouble();
            System.out.print("Introduzca nota de problemas: ");
            problemas= t.nextDouble();
            System.out.print("Introduzca nota teorica: ");
            teoria= t.nextDouble();
            if(practica>=0 && problemas>=0 && teoria>=0 && practica<=10 && problemas<=10 && teoria<=10){
                npra= practica*0.1;
                npro= problemas*0.5;
                nteo= teoria*0.4;
                nota= npra+npro+nteo;
                System.out.println("La nota de "+alumno+" es "+nota);
            }
            else{
                System.out.println("Error, la nota debe ser entre 0 y 10");
            }
            System.out.print("Introduzca el nombre de un alumno: ");
            alumno= t.nextLine();
            String nombre=alumno;
            if(alumno.isEmpty()) break;
        }
    }
}


Alguien sabria como hacer para cuando pida el nombre introducir una cadena vacia para poder salir asi del while.
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

Introducir una cadena vacia

Publicado por kingk (108 intervenciones) el 15/10/2018 00:11:28
Hola, lo que puedes hacer es cambiar el while por un do while, y seria asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
do{
System.out.print("Introduzca el nombre de un alumno: ");
alumno= t.nextLine();
System.out.print("Introduzca su nota practica: ");
practica= t.nextDouble();
System.out.print("Introduzca nota de problemas: ");
problemas= t.nextDouble();
System.out.print("Introduzca nota teorica: ");
 teoria= t.nextDouble();
if(practica>=0 && problemas>=0 && teoria>=0 && practica<=10 && problemas<=10 && teoria<=10){
npra= practica*0.1;
npro= problemas*0.5;
nteo= teoria*0.4;
nota= npra+npro+nteo;
System.out.println("La nota de "+alumno+" es "+nota);
}
 else{
System.out.println("Error, la nota debe ser entre 0 y 10");
 }while(alumno.trim().isEmpty());
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

Introducir una cadena vacia

Publicado por Kabuto (1381 intervenciones) el 15/10/2018 00:34:30
Ojo, esto no es una cadena vacia
1
while(!alumno.equals(" "))

Eso es un espacio en blanco, no una cadena vacía que sería --> ""


En cualquier caso, como han dicho, una buena forma es usar un do while().
Y al pedir el nombre, con el metodo isEmpty() sabemos si el usuario simplemente ha pulsado INTRO sin escribir nada (esto si es una cadena vacia) y podemos obrar en consecuencia.

Ejemplo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public static void main(String[] args) {
		String nombre;
		Scanner teclado = new Scanner(System.in);
 
		do{
			System.out.print("Introduzca nombre (o pulse INTRO para SALIR): ");
			nombre = teclado.nextLine();
			if (nombre.isEmpty())
				System.out.println("Saliendo del programa...");
			else
				System.out.println("Hola " + nombre + " ¿que tal?\n");
 
		}while(!nombre.isEmpty());
		teclado.close();
	}

O bien, con equals("");

Es exactamente lo mismo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public static void main(String[] args) {
		String nombre;
		Scanner teclado = new Scanner(System.in);
 
		do{
			System.out.print("Introduzca nombre (o pulse INTRO para SALIR): ");
			nombre = teclado.nextLine();
			if (nombre.equals(""))
				System.out.println("Saliendo del programa...");
			else
				System.out.println("Hola " + nombre + " ¿que tal?\n");
 
		}while(!nombre.equals(""));
		teclado.close();
	}
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