Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Java, оператор switch

Del Fis Ученик (43), на голосовании 1 год назад
Сейчас я в недоумении, что не так с кодом, почему он выходит когда ввожу тот-же Лондон, + работает криво, первый раз столкнулся с этой проблемой

 import java.util.Scanner; 

public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);

String k = in.nextLine();
switch(k){
case "Ливерпуль":
case "Манчестер":
case "Лондон ":
System.out.println("Англия");
case "Берлин":
case "Мюнхен":
case "Кёльн ":
System.out.println("Германия");
case "stop":
break;
default:
System.out.println("Ошибка");

}
}
}
Голосование за лучший ответ
Doctor Strange Мыслитель (7902) 1 год назад
"Лондон "
тут пробел в конце
Del FisУченик (43) 1 год назад
Да не в этом суть, даже если и исправить, то программа работает корява, написав Лондон, вызывается Англия и Германия и программа завершается
Doctor Strange Мыслитель (7902) Del Fis,
 case "Лондон ":  
                System.out.println("Англия");  
после этого нет break;
Del FisУченик (43) 1 год назад
всё я написал

 import java.util.Scanner; 

public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);


while(true){
String k = in.nextLine();
switch(k) {
case "Ливерпуль":
case "Манчестер":
case "Лондон":
System.out.println("Англия");
break;
case "Берлин":
case "Мюнхен":
case "Кёльн":
System.out.println("Германия");
break;
case "stop":
break;
default:
System.out.println("Ошибка");
break;
}
if(k.equals("stop")){
break;
}
}
}
}
Оракул Оракул (62095) 1 год назад
break в каждой группе case нужен
UPD Обновлено с while(true)
 import java.util.Scanner; 

public class Test {

public static void main(String[] args) {
Scanner in = new Scanner(System.in);

while (true) {
String k = in.nextLine();
if ("stop".equals(k)) {
break;
}
switch (k) {
case "Ливерпуль":
case "Манчестер":
case "Лондон":
System.out.println("Англия");
break;
case "Берлин":
case "Мюнхен":
case "Кёльн ":
System.out.println("Германия");
break;
default:
System.out.println("Ошибка");
}
}
}
}
Del FisУченик (43) 1 год назад
С break switch завершится, а мне надо только тогда, когда пользователь напишет stop
Оракул Оракул (62095) Del Fis, switch без break работает так как ему заложено, но его заложенность противоречит вашей логике, но вы не сможете switch без break сделать если хотите бесконечную программу заворачиваете switch в while(true) и проверяете первым делом stop, где брейчите цикл, а из свитча убираете
Del FisУченик (43) 1 год назад
 import java.util.Scanner; 

public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);


while(true){
String k = in.nextLine();
switch(k) {
case "Ливерпуль":
case "Манчестер":
case "Лондон":
System.out.println("Англия");
break;
case "Берлин":
case "Мюнхен":
case "Кёльн":
System.out.println("Германия");
break;
case "stop":
break;
default:
System.out.println("Ошибка");
break;
}
if(k.equals("stop")){
break;
}
}
}
}
Спасибо за ответ
Оракул Оракул (62095) Del Fis, только stop проверять вначале надо, у вас при стопе будет выведена ошибка и остановка, зачем ошибку выводить, если не ошибка
Александр Искусственный Интеллект (301711) 1 год назад
 import java.util.Scanner;  

public class Main {
public static void main(String...args) {
try(Scanner in = new Scanner(System.in)) {
boolean more = true;
while(more) {
String k = in.nextLine();
switch(k){
case "Ливерпуль":
case "Манчестер":
case "Лондон":
System.out.println("Англия");
break;
case "Берлин":
case "Мюнхен":
case "Кёльн":
System.out.println("Германия");
break;
case "stop":
more = false;
break;
default:
System.out.println("Ошибка");
}
}
} catch (Exception e) {
System.out.println("Случилась какая-то фигня: " + e);
}
}
}
Похожие вопросы