#java #while-loop #switch-statement #do-while
Вопрос:
Я принимаю ввод от пользователя в виде строки (которая содержит как символ, так и int) .Я далее разделяю строку на char amp; int и использую char в операторе case,но мой оператор case дает мне бесконечный цикл.Я не могу понять, в чем ошибка..
public static void main(String[] args) { Scanner sc=new Scanner(System.in); String str=sc.nextLine(); String[] part = str.split("\s "); do { switch(part[0]) { case "AB": System.out.println("hi"); int data=Integer.parseInt(part[1]); System.out.println(data); break; case "PR": System.out.println("printining"); break; case "AE": System.out.println("AE"); break; case "EXIT": System.exit(0); break; } } while(true); }
Комментарии:
1. Вы не меняетесь
part
внутри цикла; поэтому, если вы не введете ВЫХОД изначально, он будет продолжать зацикливаться.2. Почему у вас здесь петля?
3. @SotiriosDelimanolis, потому что я хочу продолжить цикл, пока пользователь не введет команду ВЫХОДА
Ответ №1:
Вы не меняетесь part
внутри цикла; поэтому, если вы не введете ВЫХОД изначально, он будет продолжать зацикливаться.
Переместите две строки над петлей в петлю:
do { String str = sc.nextLine(); String[] part = str.split("\s "); // Rest of loop body.
Ответ №2:
оператор break завершает работу переключателя, а не цикла, и условие цикла ВСЕГДА верно!