不科学的死循环do while
package day06;
import java.util.InputMismatchException;
import java.util.Scanner;
public class ScoreManager {
/**
* 学生成绩管理系统
* 成绩录入
* 查询成绩
* 成绩列表
* 退出
*/
static Scanner scan=new Scanner(System.in);
public static void main(String[] args) {
int cmd;
//欢迎界面,用户提示界面
main:while(true){//主界面
System.out.println("1.录入成绩|2.查询成绩|3.成绩列表|0.退出");//主界面提示
do{//命令输入界面
//cmd=scan.nextInt();
try{
// 获取菜单选择
cmd=scan.nextInt();
}
catch(InputMismatchException e)
{
System.out.println("输入整数字选择菜单!");//选择类型输入验证
break;
}
// 菜单项存在验证
if(cmd<0 || cmd>3){
System.out.println("菜单不存在");
continue;
}
else
{
String tmpCmd=Integer.valueOf(cmd).toString().trim();
if(tmpCmd.equals("1")){//去除空格
writeMsg();
}else if(tmpCmd.equals("2")){
getScoreByName();
}else if(tmpCmd.equals("3")){
listAll();
}else if(tmpCmd.equals("0")){
break main;
}
}
}while(true);
}
}
//录入模块
public static void writeMsg(){
System.out.println("录入成绩");
}
// 查询模块
public static void getScoreByName(){
System.out.println("查询成绩");
}
// 列出所有
public static void listAll(){
System.out.println("所有成绩");
}
}
这个代码在接收控制台非int输入时,会死循环,中途不等待控制台输入,求解 --------------------编程问答-------------------- 在catch中break前添加scan.next();
--------------------编程问答-------------------- 把你从控制要接收的next();改成nextint();
try {
// 获取菜单选择
cmd = scan.nextInt();
} catch (InputMismatchException e) {
System.out.println("输入整数字选择菜单!");//选择类型输入验证
scan.next();
break;
}
补充:Java , Java相关