【发布时间】:2016-10-29 11:48:56
【问题描述】:
我有一个家庭作业,要创建一个带有循环菜单的课程来管理汽车队列。我们在上一节课中学习了队列。
我的菜单运行良好,直到它捕获InputMismatchException 或QueueEmptyException,之后它进入无限循环,甚至没有在userInput.nextInt(); 处停止。它在捕获 QueueFullException 时有效,但在其他时无效。
我的代码是:
import java.util.*;
public class CarQueueManagement {
public static void main(String[] args) throws InputMismatchException, QueueFullException{
ArrayQueue queue = new ArrayQueue(3);;
Scanner userInput = new Scanner(System.in);
int carNum;
int choice = 0;
queue.add(1);
OUTER:
while (true) {
try{
System.out.println("ΜΕΝΟΥ:\n\t1. Άφιξη αυτοκινήτου");
System.out.println("\t2. Αναχώρηση αυτοκινήτου\n\t3. Κατάσταση ουράς\n\t4. Έξοδος");
System.out.print("\n\tΕπιλογή (1-4): ");
choice = userInput.nextInt();
switch (choice){
case 1:
System.out.print("\n\tΆφιξη αυτοκινήτου:\n\t\tΑριθμός Αμαξιού");
carNum = userInput.nextInt();
queue.add(carNum);
break;
case 2:
if(queue.isEmpty()){
System.out.println("\n\tΗ ουρά είναι άδεια, δεν χριάζεται διαγραφή.\n\n");
break;
}
String answer;
while(true){
System.out.print("\n\tΑναχώρηση αυτοκινήτου\n\t\tΕπιβεβαίωση; (y/n): ");
answer = userInput.next();
if(answer.equals("y")){
queue.remove();
break;
}
else if(answer.equals("n"))
break;
}
break;
case 3:
System.out.println("\n\tΚατάσταση ουράς:");
if(queue.isEmpty()) System.out.println("\t\tΗ ουρά είναι άδεια.\n\n");
else if(queue.isFull()) System.out.println("\t\tΗ ουρά είναι γεμάτη.\n\n");
else System.out.println("\t\tΗ ουρά έχει άδιες θέσοις.\n\n");
break;
case 4:
System.out.print("\n\nΕξοδος");
break OUTER;
default:
break;
}
}catch (InputMismatchException exc){
System.out.println("\t\tΛΑΘΟΣ ΕΙΣΑΓΩΓΗ\n");
}catch(QueueEmptyException exc){
System.out.println("\t\t" + exc.getMessage() + "\n");
}catch(QueueFullException exc){
System.out.println("\t\t" + exc.getMessage() + "\n");
}
}
}
}
【问题讨论】:
-
你知道
while (true)在做什么吗? -
我知道,直到我休息一下;指向它循环,但我也知道当我有输入代码时,它需要停止接受输入。它适用于
QueueFullException,但不适用于其他人。其他 2 个异常循环遍历所有内容,甚至没有停在userInput.nextInt(); -
我打赌你输入数字后按回车键?
-
我按
Enter我使用 NetBeans 并使用已实现的Run选项测试我的代码,因为您可以告诉我,我只希望我的代码退出循环并通过选择 4 女巫终止程序用希腊语说“退出”。
标签: java loops exception while-loop switch-statement