当前位置:编程学习 > JAVA >>

不科学的死循环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();

                try {
//                    获取菜单选择
                    cmd = scan.nextInt();
                } catch (InputMismatchException e) {
                    System.out.println("输入整数字选择菜单!");//选择类型输入验证
                    scan.next();
                    break;
                }
--------------------编程问答--------------------  把你从控制要接收的next();改成nextint();
补充:Java ,  Java相关
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,