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

一个java程序的异常处理

package com.cn.homework;

import java.util.InputMismatchException;
import java.util.Scanner;

public class Menu {
private static Scanner sc;
private static Scanner reader;
//private static String j;

public static void main(String atgs []){
String[] str = {"显示帮助","设置班级","设置兼职老师","设置全职老师","设置学员",
"设置课程","设置教师","自我设置","显示信息","退出系统"};
StringBuilder sb = new StringBuilder();
sb.append("*****显示帮助*******");
sb.append("\n");
for(int i=0;i<10;i++){
sb.append(i+"--------"+str[i]+"\n");
}
sb.append("请从0~9中选择数字输入:");
System.out.println(sb);
while(true){
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
String s = sc.next();
if(i==0){
try{
while(reader.hasNextInt()){
System.out.println("显示帮助:");
}
}catch(NullPointerException e){
e.printStackTrace();
}
}
else if(i==1){
try{
while(reader.hasNextInt()){
}
}catch(NullPointerException e){
System.out.println("设置班级:");
}
}
else if(i == 2){
try{
while(reader.hasNextInt()){
}
}catch(NullPointerException e){
System.out.println("设置兼职老师:");
}
}
else if(i==3){
try{
while(reader.hasNextInt()){
}
}catch(NullPointerException e){
System.out.println("设置全职老师:");
}
}

}
}
try{
//i = sc.nextInt();
s = sc.next();
}catch(InputMismatchException e){
System.out.println("输入错误,请输入0~9的数字!程序运行结束!");
}
}
}

}



请问如何处理用户输入的非数字和非指定范围内的数字呢,麻烦帮帮忙,谢谢了
答案:
从这开始:
Scanner sc = new Scanner(System.in);
然后全用String 后面就不会有异常了,也不用处理,如下:
String i = sc.next();
if(i.matches("^\\d$")){//matches()是String类里的一个很重要的方法(正则表达式);如果你只需要数字0~4中的一个数字,那只要在判断条件里写成i.matches(^[0-4]$) 这样除了输入0、1、2、3、4以外的其他数字或者符号都会判断为false了。
int j = Integer.parseInt(i);//这里是把String转成int类型的方法,既然已经判断i一定是0~9其中的一个数字 那这里就不会有异常,所以所有异常都不用处理了。
...
}else
System.out.println("输入错误,请输入0~9的数字!程序运行结束!");
}
关于其他的处理请参考api中的java.lang.String中的matches()方法里的正则表达式,里面对过滤数字字母等所有符号有专门的表达式:如\d代表0~9中的一个数字,\w代表所有英文字母。

你这道题设置班级号的话应该是"^\\d+$";
设置姓名的话应该是"^\\w$+";
是否为数字可由阿斯码来判断,指定范围数字不是可以用if?
 象这个JAVA程序 不能处理。
只有SWING或者WEB程序才能处理输入的范围。
你可以用awt或swing处理汉译的问题,不过那太原始,最好是JSp处理  你那只是简单的java程序 属于j2se  所以用swing吧
使用正则表达式
如果你想简单点,就之间用try...catch...在catch对可能出现的情况做处理,如所输入数据字符不对,数字大小越界。当然,你可以自己写个算法来判断所获得的数字是否合法,需要的话我可以贴上代码。
正则表达式

上一个:java 和.net 有哪些区别
下一个:hibernate怎么创建java属性文件格式的配置

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,