假设用户输入了几个值,程序使用stringTokenizer来打破这些值。然后程序会尝试解析令牌并抛出错误吗?错误catch会输出数据类型; 这是第一年编程课程的一个问题,所以我宁愿没有直接的答案,而是更多的正确方向。教授只想要两个try ... catch子句,这两个子句都在寻找NumberFormatException。
提前致谢。
原始问题:
“使用异常和测试将键盘输入分类为其中一个 八种原始数据类型,或String。“
答案 0 :(得分:1)
我们将精确缩小输入的顺序:boolean> char>双>浮动>长> int>简短>字节
丢弃问题的“或字符串”部分,所有字符串都可以 求值为布尔值(参见Boolean.parseBoolean(s))。所以,你的 开始回答是“输入是一个布尔值”,并继续。
输入的长度是1个字符吗?如果是这样,“输入是一个 字符“。继续不断。
打开试用版。
Double.parseDouble(一个或多个)。如果没有异常,“输入是a 双重“,继续前进。
尝试按上面给出的顺序解析输入。
打开一个catch块,捕获NumberFormatException。块会 实际上是空的,因为你真正想要的是finally块。
打开一个finally,你将在其中返回你的答案。
除非我遗漏了某些东西(完全有可能,因为我没有编写代码),这给你“一个”要求,使用少数例外,并利用异常来控制流程。
答案 1 :(得分:0)
最后的回答谢谢你们
import java.io.*;
import java.util.StringTokenizer;
/**
* Classifies input into primitive types or String
*
* @author Suavelizard
* @version Feb, 2012
*/
public class Classify
{
public static void main(String[] args) throws IOException
{
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Please enter some data (C-z or C-d to quit): ");
String str = in.readLine();
while (str != null)
{
StringTokenizer tokenizer = new StringTokenizer(str);
while (tokenizer.hasMoreTokens())
{
String token = tokenizer.nextToken();
// your code goes here!
try{
long x = Long.parseLong(token);
if(x<= Byte.MAX_VALUE &&x>= Byte.MIN_VALUE){
System.out.println("Input is a Byte");}
else if (x<=Short.MAX_VALUE && x>=Short.MIN_VALUE){
System.out.println("Input is a Short");
}
else if(x<=Integer.MAX_VALUE && x>= Integer.MIN_VALUE){
System.out.println("Input is an Integer");
}
else{
System.out.println("Input is a Float");
}
}
catch(NumberFormatException a){
try{
double x = Double.parseDouble(token);
if (x<= Float.MAX_VALUE &&x>= Float.MIN_VALUE)
{
System.out.println("Input is a Float");
}
else if(x<= Double.MAX_VALUE &&x>= Double.MIN_VALUE)
{
System.out.println("Input is a Double");
}
}
catch(NumberFormatException b){
if (token.length() == 1){
System.out.println("Input is a Character"); }
else if(token.equalsIgnoreCase("true")|| token.equalsIgnoreCase("false")){
System.out.println("Input is a Boolean");
}
else{
System.out.println("Input is a String");
}
}
}
}
System.out.print("Please enter some data (C-z or C-d to quit): ");
str = in.readLine();
}
}
}