Бесконечный вывод в операторе case java

#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 завершает работу переключателя, а не цикла, и условие цикла ВСЕГДА верно!