题目如下:IntReceiver类可以接受指定范围内的整数值,具有下面四个属性:
最小的可接受值
最大的可接受值
输入提示字符串
错误消息字符串
并具有一个方法:
getValue(),功能是显示 输入提示字符串,然后读取键盘输入的一个整数。如果读取的值不在允许范围内,则显示 错误消息字符串,并重新要求用户输入一个新值,重复以上步骤直到输入了一个可接受的值。最后返回读取到的整数。
要求编程实现IntReceiver类,使给定的Test类能正常运行,并实现指定的输出内容。指定范围为0-100.
Test类代码如下:
public class Test
{
public static void main(String[] args)
{
IntReceiver ir = new IntReceiver();
int value;
value = ir.getValue();
System.out.println("The value is "+value);
}
}
【输入形式】
【输出形式】
【样例输入】
【样例输出】
input an integer:124
invalid input!
input an integer:-98
invalid input!
input an integer:587
invalid input!
input an integer:34
The value is 34
import java.util.Scanner;
public class Testa{
public static void main(String [] args){
IntReceiver ir = new IntReceiver();
int value;
value = ir.getValue();
System.out.print("The value is "+value);
}
}
class IntReceiver{
private int max=100;
private int min=-1;
private String warningStr="invalid input!";
private String inputStr="input an integer:";
private int num=-1;
public int getValue(){
Scanner in = new Scanner(System.in);
while(num<=min||num>max){
System.out.print(inputStr);
/*
//Scanner in = new Scanner(System.in);
//当该句在此处时,会关闭控制台输入流
//第一次循环时,num = in.nextInt();会关闭System.in流,
//且无法再打开;即使第二次循环再使用
//Scanner in = new Scanner(System.in);也不会再打开这个流,
//自然就无法再进行控制台录入了
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:907)
at java.util.Scanner.next(Scanner.java:1530)
at java.util.Scanner.nextInt(Scanner.java:2160)
at java.util.Scanner.nextInt(Scanner.java:2119)
at IntReceiver.getValue(Testa.java:28)
at Testa.main(Testa.java:6)
*/
num = in.nextInt();
if(num>max||num<min){
System.out.println(warningStr);
}
else{
break;
}
}
return num;
}
}
注意:
若不修改Scanner in = new Scanner(System.in);
则