要求:完成一个 java application应用程序,接收用户通过键盘不断输入表示某门课程的成绩的字符串(按回车为一个字符串结束),当输入非法数字(输入值小于0或大于100)时提示成绩输入有误,当输入为非数字的字符串时提示输入格式不合法。
1.思路与知识点
此任务和之前相似仍需要自行定义异常类型,而此处异常要考虑两种情况,一是输入的字符串并非数字;二是输入的字符串数字过大或过小超出了现实中成绩的常规范围。这也是此题的关键,即如何去判断输入的字符串是否符合要求,可以总结为以下两个知识点:
从字符串中提取数字(参考链接) 在Java中,有时需要获取字符串中的数字进行后续判断,常用的从字符串中提取数字的方法有:正则表达式和用字符串方法处理。 这里采用的是第二种方法,使用for循环依次遍历字符串的每个字符,在遍历时使用if判断每个字符是否为数字。此外,在遍历时用到的charAt方法有:
String类型转换为int类型 Java中String字符串类型转换为int类型主要方法是使用Integer中的parseInt()等方法。查找jdk文档可看到: 根据帮助文档可以看到具体语法有:
int 变量名
= Integer
.parseInt(String 变量名
);
2.代码
import java
.util
.Scanner
;
public class ExceptionWork3 {
public static void main(String
[] args
) {
while (true){
Scanner s
= new Scanner(System
.in
);
System
.out
.println("请输入某门课程的成绩:");
String grade
= s
.nextLine();
MygradeException m
= new MygradeException();
if (!grade
.equals("quit")){
try {
String a
= m
.Grades(grade
);
System
.out
.println("成绩记录成功");
}catch (Exception e
){
e
.printStackTrace();
System
.out
.println("请重新输入合法成绩");
}
}else {
System
.exit(0);
}
}
}
}
class GradeException extends Exception{
public GradeException(String msg
){
super(msg
);
}
}
class MygradeException{
public String
Grades(String grade
)throws GradeException
{
String a
= grade
;
for (int i
=0;i
<a
.length();i
++){
if (a
.charAt(i
)<'0' || a
.charAt(i
)>'9'){
throw new GradeException("输入格式不合法");
}
}
int grades
= Integer
.parseInt(grade
);
if (grades
<0 || grades
> 100){
throw new GradeException("成绩输入有误");
}
return a
;
}
}
3.运行结果