gpt4 book ai didi

java - 无法捕获 InputMismatchException

转载 作者:行者123 更新时间:2023-12-01 17:44:21 24 4
gpt4 key购买 nike

所以我一直在做一项任务,要求我们建立一个“患者经理”,根据紧急级别确定首先治疗的患者。我遇到的主要问题是,当用户在紧急栏中输入数字以外的内容时,它会使程序崩溃并给我一个 InputMismatchException ,尽管我试图捕获它。任何想法都将不胜感激!

import java.util.*;

public class PatientManager {
private PriorityQueue<Patient> waitingList;

public PatientManager() {
waitingList = new PriorityQueue<Patient>();
}

// Starter method
public void start() {
String choice;
Scanner in = new Scanner(System.in);
String name;
int emergency = 0;
int order = 0;
Patient patient;
System.out.println("-------------------------------");
System.out.println("(1) New Patient.");
System.out.println("(2) Next Patient.");
System.out.println("(3) Waiting List.");
System.out.println("(4) Exit.");
System.out.println("-------------------------------");

while (true) {
System.out.print("* Choose an item from the menu:");
choice = in.next();
switch (choice) {
case "1":
System.out.println("Enter patient's name:");
name = in.next();
System.out.println("Enter emergency [1 (low) to 5 (life-and-death)]:");

while (true) {
try {
emergency = in.nextInt();
if (emergency >= 1 && emergency <= 5)

break;
else {
System.out.println("(x) Wrong value. Try again:");
emergency = in.nextInt();
}
} catch (Exception e) {
System.out.println("(x) Wrong value. Try again:");
emergency = Integer.parseInt(in.nextLine());
}
}
order++;
patient = new Patient(order, name, emergency);
waitingList.add(patient);
System.out.println("Patient added to the waiting list.");
break;
case "2":
if (waitingList.isEmpty()) {
System.out.println("No more patients.");
} else {
patient = waitingList.remove();
System.out.println(patient.getName() + " is treated.");
}
break;
case "3":
if (waitingList.size() == 0) {
System.out.println("No patients in the list.");
} else {
System.out.println("Waiting list includes:");
Iterator<Patient> iterator = waitingList.iterator();
while (iterator.hasNext()) {
patient = (Patient) iterator.next();
System.out.println("- " + patient.toString());
}
}
break;
case "4":
System.out.println("Program terminated. Good bye!!");
in.close();
System.exit(0);
break;
default:
System.out.println("(x) Wrong choice.");
break;
}
}


}
}

最佳答案

首先,您的代码比需要的复杂得多。用这个替换整个 while 循环,然后再次测试。

while (emergency < 1 || emergency > 5) {
try {
emergency = in.nextInt();
if (emergency < 1 || emergency > 5)
System.out.println("(x) Wrong value. Try again:");
}
catch (Exception e) {
System.out.println("(x) Wrong value. Try again:");
}
}

关于java - 无法捕获 InputMismatchException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60887785/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com