作者pugboy ()
看板java
标题[问题] 请问有关於判断输入是否为数字及重输入
时间Mon Dec 24 10:25:02 2012
请问各位前辈,这是我在书本看到的练习
题目是:使用[介面]撰写code完成
定义一个大学及研究所成绩通过的介面,它有两个资料成员
,分别是大学及格成绩60及研究所及格分数70,定义一个方法成员,用来判断是否及格
,再分别定义大学及研究所的类别来实作介面,在主程式中,先让使用者输入分数,
再由电脑先是及格与否。
我的code如下:
package Book;
import java.io.*;
interface Score{ //介面
final int POSTGRADUATE=70; //研究生及格分数
final int UNDERGRADUSTE=60; //大学生及格分数
public abstract String results(); //抽象判断方法
}
class CPostgraduate implements Score { //研究生类别实作介面
private int cscore;
CPostgraduate(int cscore){
this.cscore = cscore;
}
@Override
public String results(){ //实作判断方法
if(cscore >= POSTGRADUATE)
return "及格";
else
return "不及格";
}
}
class CUndergraduate implements Score { //大学生类别实作介面
private int cscore;
CUndergraduate(int cscore){
this.cscore = cscore;
}
@Override
public String results(){ //实做判断介面
if(cscore >= UNDERGRADUSTE)
return "及格";
else
return "不及格";
}
}
public class Goodself { //主程式
public static void main(String[]args) { //main进入点
BufferedReader keyin = new BufferedReader(new
InputStreamReader(System.in));
System.out.println("请输入:");
try{ //问题点! 如果是数字就进入
int input = Integer.parseInt(keyin.readLine());
}catch(IOException | NumberFormatException e){//如果不是数字就抛出例外
//且印出错误讯息
System.out.println("不是数字");
}finally{
CPostgraduate p1 = new CPostgraduate(input); //印出总结果
System.out.println("研究所成绩,"+p1.results());
CUndergraduate u1 = new CUndergraduate(input);
System.out.println("大学成绩,"+u1.results());
}
}
}
我的问题是最後这个程式输入不是数字的时候会抛出例外并印出("不是数字")
但是输入数字却会跑出下列错误讯息:
Exception in thread "main" java.lang.RuntimeException: Uncompilable source
code - cannot find symbol
symbol: variable input
location: class Book.Goodself
at Book.Goodself.main(Goodself.java:48)
Java Result: 1
我想请问各位前辈是不是我try那边有写错观念不对呢?
还有请问判断输入超过0~100这个范围也要输出错误讯息 以及
如果输入错误可以让使用者再重新输入
这样要如何改写code呢?
麻烦了
谢谢前辈
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.115.130.102
※ 编辑: pugboy 来自: 140.115.130.102 (12/24 10:26)
1F:推 LaPass:第一次看到 IOException | NumberFormatException e 的写法 12/24 10:38
2F:推 tomoyaken14:没记错的话,这边应该是finally会出错... 12/24 10:47
3F:→ pugboy:还是有别的方法可以用呢... thanks you... 12/24 11:07
4F:→ ssccg:try里面宣告的变数scope只在try block 12/24 11:21
5F:→ ssccg:把int input移到try外面就好 12/24 11:23
6F:推 PsMonkey:先别管什麽语法了,你听过语意与商业逻辑要尽量相符吗? 12/24 12:04
请教Ps板主,刚刚上网查了一下了解了何谓商业逻辑...但是语意是什麽还不太懂
想请教您什麽是语意还有我这样的写法哪里不相符呢?
麻烦 谢谢了
7F:→ polppk:同楼上且如果input非数字,finally也会执行 12/24 12:05
8F:→ polppk:同楼上是ss哈 12/24 12:06
想在catch後面加上break...结果似乎好像是不行...
*[1;37m推
swpoker:请问你是用什麽开发的~记事本+命令列模式吗? 12/24 13:28
9F:推 swpoker:不然IDE直接就错误了~ 12/24 13:39
我是用IDE....还是可以执行阿...
※ 编辑: pugboy 来自: 140.115.130.102 (12/24 16:07)
10F:→ pugboy:SOS 12/24 16:14
※ 编辑: pugboy 来自: 140.115.130.102 (12/24 16:19)
※ 编辑: pugboy 来自: 140.115.130.102 (12/24 16:20)