usando la clase Scanner para capturar datos y el usuario solo sale del sistema cuando presione la opción 0. Exit.
package com.anncode.amazonviewer;
import java.util.Scanner;
public class Main {
publicstaticvoidmain(String[] args){// TODO Auto-generated method stub int exit =0;do{Scanner sc =newScanner(System.in);System.out.println("BIENVENIDOS AMAZON VIEWER");System.err.println("");System.out.println("Selecciona el numero de la opción deseada");System.out.println("1. Movies");System.out.println("2. Series");System.out.println("3. Books");System.out.println("4. Magazines");System.out.println("0. Exit");//leer la respuesta del usuario int entrada = sc.nextInt();switch(entrada){case1:System.out.println("entraste a Movies"); exit =1;break;case2:System.out.println("entraste a Series"); exit =1;break;case3:System.out.println("entraste a Books"); exit =1;break;case4:System.out.println("entraste a Magazines"); exit =1;break;case0:System.out.println("saliste del sistema!"); exit =0;break;default:System.out.println("Opción no disponible"); exit =1;break;}}while(exit !=0);}
}
El problema radica es que el do-while no está funcionando para nada con el switch-case, ya que la idea es que repita el menú las veces que quiera hasta que elija la opción 0 y no lo hace, sólo se puede ingresar al menú 1 sola vez y esto pasa es por el break del switch-case.
El problema no radica en el break, si no en la condicion del while, por que dice que mientras exit sea diferente de 0 seguira el ciclo sin embargo este es igual a cero por lo cual termina el ciclo, el break dentro del switch solo da por terminado el switch pero repito el ciclo termina por la condicion no por el break. 😄
Creo que es más elegante usar un HasMap que una estructura de switch-case que puede crecer indefinidamente, abajo les dejo mi solución
import java.nio.channels.FileChannel;import java.util.HashMap;import java.util.Map;import java.util.Scanner;publicclassAmazonBooks{publicstaticvoidmain(String[] args){// Initial state int exit =0;// Mapa de respuestasMap<Integer,String> optionsMap =newHashMap<>(); optionsMap.put(1,"Movies"); optionsMap.put(2,"Series"); optionsMap.put(3,"Books"); optionsMap.put(4,"Magazines"); optionsMap.put(0,"Exit");do{System.out.println("BIENVENIDOS A AMAZAON VIEWER");System.out.println("");System.out.println("Selecciona el número de la opción deseada");System.out.println("1. Movies");System.out.println("2. Series");System.out.println("3. Books");System.out.println("4. Magazines");System.out.println("0. Exit");// Leer la respuestaSystem.out.println("\nIngresa la opción deseada:");Scanner inputScanner =newScanner(System.in);//Creación de un objeto Scanner int userInput = inputScanner.nextInt();String chosenOption = optionsMap.get(userInput);System.out.println("Has escogido visualizar:");System.out.println(chosenOption); exit = userInput;}while(exit !=0);}}
Si, me parece excelente. Aparte de que el switch-case no tiene sentido ya que con el método do-while a la final no está haciendo el ciclo como debería.
Muy bien, pero se puede optimizar todavía más (aparte, faltaba cerrar el objeto).
package com.Moises.DoWhile;import java.util.HashMap;import java.util.Map;import java.util.Scanner;publicclassMenuWithHash{publicstaticvoidmain(String[] args){// Mapa de respuestasMap<Integer,String> optionsMap =newHashMap<>(); optionsMap.put(1,"Movies"); optionsMap.put(2,"Series"); optionsMap.put(3,"Books"); optionsMap.put(4,"Magazines"); optionsMap.put(0,"Exit"); int userInput;Scanner inputScanner =newScanner(System.in);//Creación de un objeto Scannerdo{System.out.println("AMAZON VIEWER. Welcome\n");System.out.println("Select your option");System.out.print("1. "+ optionsMap.get(1)+"\n2. "+ optionsMap.get(2)+"\n3. ");System.out.print(optionsMap.get(3)+"\n4. "+ optionsMap.get(1)+"\n0. "+ optionsMap.get(0)); userInput = inputScanner.nextInt();System.out.println(optionsMap.get(userInput)+" selected");}while(userInput !=0); inputScanner.close();}}
Yo le añadí la lectura de datos desde consola
<package com.crowsroom.amazonviewer;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;publicclassMain{publicstaticvoidmain(String[] args) throws IOException{// TODO Auto-generated method stub int exit=0;do{System.out.println("BIENVENIDOS A AMAZON VIEWER");System.out.println(" ");System.out.println("Selecciona el numero de la opcion deseada ");System.out.println("1. Movies");System.out.println("2. Series");System.out.println("3. Books");System.out.println("4. Magazines");System.out.println("0. Exit");InputStreamReader isr =newInputStreamReader(System.in);BufferedReader br =newBufferedReader(isr);String textoconsola = br.readLine(); int num =Integer.parseInt(textoconsola);switch(num){case1:System.out.println("Lista de Movies");break;case2:System.out.println("Lista de Series!");break;case3:System.out.println("Lista de Books!");break;case4:System.out.println("Lista de Magazine!");break;case0:System.out.println("Saliendo del Menu"); exit =0;break;default:System.out.println("Opcion invalida.");break;}}while(exit!=0);}}>
Muy buen aporte!!
El problema radica es que el do-while no está funcionando para nada con el switch-case, ya que la idea es que repita el menú las veces que quiera hasta que elija la opción 0 y no lo hace, sólo se puede ingresar al menú 1 sola vez y esto pasa es por el break del switch-case.
package com.javaplatzi.practica;import java.util.Scanner;publicclassEjercicio1{publicstaticvoidmain(String[] args){ int exit =0, op=0;Scanner scan =newScanner(System.in);do{System.out.println("BIENVENIDO AMAZON VIEWER");System.out.println("");System.out.println("Selecciona el numero de la opcion deseada");System.out.println("1. Movies");System.out.println("2. Series");System.out.println("3. Books");System.out.println("4. Magazines");System.out.println("0. Exit"); op = scan.nextInt();switch(op){case1:System.out.println("MOVIES");System.out.println("1. Avengers");System.out.println("2. Batman");System.out.println("3. Interstellar");break;case2:System.out.println("SERIES");System.out.println("1. Friends");System.out.println("2. Strangers Things");System.out.println("3. Orange is the new black");break;case3:System.out.println("BOOKS");System.out.println("1. Harry Potter");System.out.println("2. El señor de los anillos");System.out.println("3. Tokio Blues");break;case4:System.out.println("MAGAZINES");System.out.println("1. Algarabia");System.out.println("2. Muy Interesante");System.out.println("3. National Geographic");break;default:System.out.println("Opcion no valida");continue;}}while(exit !=0);}}
Lo que hice fue importar Scanner, luego crear un Objeto Scanner y guardarlo en “sn”, de ese modo no tengo que escribir Scanner() demasiadas veces.
Y para recibir la respuesta del usuario debemos guardar la respuesta en opc de la siguiente manera: opc = sn.nextInt();
package com.jasanhdz.amazonviewer;import java.util.Scanner;publicclassMenu{publicstaticvoidmain(String[] args){// TODO Auto-generated method stubScanner sn =newScanner(System.in); int exit =0; int opc;do{System.out.println("Bienvenidos a Amazon Viewer");System.out.println("");System.out.println("Selecciona el número de la opción deseada: ");System.out.println("1. Movies");System.out.println("2. Series");System.out.println("3. Books");System.out.println("4. Magazines");System.out.println("0. Exit");System.out.println("------------------------------------------"); opc = sn.nextInt();switch(opc){case1:System.out.println("Haz seleccionado la opción 1. Movies");break;case2:System.out.println("Haz seleccionado la opción 2. Series");break;case3:System.out.println("Haz seleccionado la opción 3. Books");break;case4:System.out.println("Haz seleccionado la opción 4. Magazines");break;case0:System.out.println("Saliendo de la ejecución");default:System.out.println("Solo números entre 0 y 4");break;}}while(exit !=0);}}
Los objetos son aquellos que tienen atributos.
package com.leslierosazza.amazonviewer;
import java.util.Scanner;
public class Main {
publicstaticvoidmain(String[] args){// TODO Auto-generated method stub int exit =0;do{System.out.println("BIENVENIDOS AMAZON VIEWER");System.err.println("");System.out.println("Selecciona el numero de la opcion deseada");System.out.println("1. Movies");System.out.println("2. Series");System.out.println("3. Books");System.out.println("4. Magazines");System.out.println("0. Exit");//Leer la respuesta del usuarioScanner scan =newScanner(System.in); int respuesta = scan.nextInt();switch(respuesta){case0:System.out.println("Saliendo");break;case1:System.out.println("Movies");break;case2:System.out.println("Series");break;case3:System.out.println("Books");break;case4:System.out.println("Magazines");break;default:System.out.println("Esta opcion no existe");break;}}while(exit !=0);}
}
Acá dejo mi version tuneada.
Tengan en cuenta al momento de usar valores del scanner que tiene que hacer el chequeo de si el tipo de dato ingresado es del mismo tipo de dato que piensan almacenar en la variable.
De lo contrario les dará un error.
package ar.com.seitler;import java.util.Scanner;publicclassHelloWorld{publicstaticvoidmain(String[] args){ final String[] options ={"Movies","Series","Books","Magazines"}; boolean exit =false;System.out.println("BIENVENIDOS A AMAZON VIEWER");System.out.println();System.out.println("Selecciona el número de la opción deseada");System.out.println("------------------------------------------");for(byte i =0; i < options.length; i++)System.out.println((i+1)+". "+ options[i]);System.out.println("0. Exit");System.out.println("------------------------------------------");do{ final Scanner scanner =newScanner(System.in); byte userInput =-1;if(scanner.hasNextByte()) userInput = scanner.nextByte();if(userInput >=0&& userInput <= options.length){if(userInput !=0)System.out.println("Haz seleccionado la opción "+ userInput +": "+ options[userInput-1]); exit =true;}else{System.out.println("Por favor, indica una opcion entre 0 y "+(options.length));}}while(!exit);}}
LLevo año aprendiendo distintos lenguajes y siempre tengo como regla cuando aprendo a leer datos aprender a controlar errores … una forma es conun simple if… entiendo que java tiene try … catch … pero no se usarlo xD les dejo una opción
if(isNumeric(textoconsola)){ num =Integer.parseInt(textoconsola);}else{System.out.println("pongale numero!!!"); num =9;}```
package com.anncode.amazonviewer;import java.util.Scanner;publicclassMain{publicstaticvoidmain(String[] args){// TODO Auto-generated method stub int exit =0, opcion=0;Scanner scan =newScanner(System.in);do{System.out.println("BIENVENIDOS AMAZON VIEWER");System.err.println("");System.out.println("Selecciona el numero de opción deseada");System.out.println("1. Movies");System.out.println("2. Series");System.out.println("3. Books");System.out.println("4. Magazines");System.out.println("0. Exit"); opcion = scan.nextInt();switch(opcion){case1:System.out.println("MOVIES");System.out.println("1. Spiderman");System.out.println("2. Venganza");break;case2:System.out.println("SERIES");System.out.println("1. Lost");System.out.println("2. The Walking Dead");break;case3:System.out.println("BOOKS");System.out.println("1. Cien años de soledad");System.out.println("2. Game of Thrones");break;case4:System.out.println("MAGAZINES");System.out.println("1. Semana");System.out.println("2. Glamour");break;default:System.out.println("Opcion no valida");continue;}}while(exit !=0);for(int e=1; e<=5; e++){}}}
import java.util.Scanner;
public class Array {
public static void main(String[] args) {
int exit =0;do{System.out.println("BIENVENIDOS A AMAZON VIEWER");System.out.println();System.out.println("Selecciona la opcion deseada");System.out.println("1. Movies");System.out.println("2. Series");System.out.println("3. Books");System.out.println("4. Magazine");System.out.println("0. Exit");Scanner leer =newScanner(System.in);System.out.println("ingresa el numero del menu"); int menu = leer.nextInt();switch(menu){case1:System.out.println("Menu de peliculas");break;case2:System.out.println("Menu de series");break;case3:System.out.println("Menu de libros");break;case4:System.out.println("Menu de magazines");break;case0:System.out.println("saliste del menu");break;default:System.out.println("opcion no disponible");break;}}while(exit !=0);
}
}
usando la clase scanner el usuario solo sale del sistema hasta presionar 0
import java.util.Scanner;publicclassMain{publicstaticvoidmain(String[] args){ int exit =1;Scanner teclado =newScanner(System.in);do{System.out.println("WELCOME TO AMAZON VIEWER");System.out.println("1.-MOVIES");System.out.println("2.-MUSIC");System.out.println("3.-BOOKS");System.out.println("4.-MAGAZINES");System.out.println("0.-EXIT"); exit=teclado.nextInt();switch(exit){case1:System.out.println("entraste a Movies");break;case2:System.out.println("entraste a Music");break;case3:System.out.println("entraste a Books");break;case4:System.out.println("entraste a Magazines");break;case0:System.out.println("saliste del sistema!");break;default:System.out.println("Opción no disponible");break;}}while(exit!=0);}}
publicclassMain{publicstaticvoidmain(String[] args){ int respuesta =6;do{System.out.println("BIENVENIDOS AMAZON VIEWER");System.out.println("");System.out.println("Selecciona el número de la opción deseada");System.out.println("1. Movies");System.out.println("2. Series");System.out.println("3. Books");System.out.println("4. Magazines");System.out.println("0. Exit");}//se valida que solo ingrese valores entre 0 y 4while(respuesta <0|| respuesta >4)switch(respuesta){case0:System.out.println("0. Exit");break;case1:System.out.println("1. Movies");break;case2:System.out.println("2. Series");break;case3:System.out.println("3. Books");break;case4:System.out.println("4. Magazines");break;}}}
public class MenuAmazon {
publicstaticvoidmain(String[] args){ int opcion;do{System.out.println("BIENVENIDOS AMAZON VIEWER");System.out.println("Escoja una opcion");System.out.println("1. Movies");System.out.println("2. Series");System.out.println("3. Books");System.out.println("4. Magazines");System.out.println("0. Exit");Scanner lectura=newScanner(System.in);System.out.println("Digita una ocpion"); opcion=lectura.nextInt();switch(opcion){case1:System.out.println("BIenvenido a movies");break;case2:System.out.println("Bienvenido a series");break;case3:System.out.println("Bienvenido a books");break;case4:System.out.println("Bienvenido a magazines");break;default:System.out.println("Muchas gracias por visitarnos");break;}}while(opcion!=0);}
}
muy buena explicacion de cada concepto. gracias annCode
<code>package com.ludiansito.amazonviewer;import java.util.Scanner;publicclassMain{publicstaticvoidmain(String[] args){// TODO Auto-generated method stubScanner sc=newScanner(System.in);int exit =0;do{System.out.println("BIENVENIDOS AMAZON VIEWER");System.err.println("");System.out.println("Selecciona el numero de la opcion deseada");System.out.println("1.Movies");System.out.println("2.Series");System.out.println("3.Books");System.out.println("4.Magazines");System.out.println("0.Exit");//LEER LA RESPUESTA DEL USUARIO int ingresar =sc.nextInt();switch(ingresar){case1:System.out.println("Ingresaste a Movies"); exit =1;break;case2:System.out.println("Ingresaste a Series"); exit =2;break;case3:System.out.println("Ingresaste a Books"); exit =3;break;case4:System.out.println("Ingresaste a Magazines"); exit=4;break;case0:System.out.println("Saliste del Sistema"); exit =0;break;default:System.out.println("Opcion no valida");}}while(exit!=0);}}
Super continuando con el repaso ;)
Recién estoy echándole ojo a un libro que trata la programación orientada a objetos, y veo que muchos de los conceptos teóricos que salen ahí también los tratan acá, aunque acá se toma una idea práctica para utilizar dichos conceptos. El libro es este , y aunque es del 2007 todavía se puede entender.
classe scanner
Acá les dejo mi aporte compañero:
package com.wilcode;
import java.util.Scanner;
/**
*
@author pewil
*/
public class AmazonViewer {
/**
@param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
short exit = 1;
Scanner entrada = new Scanner();
do{
System.out.println(“BIENBENIDOS A AMAZON VIEWER”);
System.out.println("");
System.out.println(“Selecciona el numero de la opcion deseada”);
System.out.println(“1. MOVIES”);
System.out.println(“2. SERIES”);
System.out.println(“3. BOOKS”);
System.out.println(“4. MAGAZINES”);
System.out.println(“0. Exit”);
//Leer la respuesta del usuarioSystem.out.println("==>");String opcion = entrada.nextLine();switch(opcion){case"0":System.out.println("Saliendo del Sistema"); exit =0;break;case"1":System.out.println("Mostrar movies");break;case"2":System.out.println("Mostrar series");break;case"3":System.out.println("Mostrar books");break;case"4":System.out.println("Mostrar magazines");break;default:System.out.println("Opcion incorrecta");break;}