原问题:从命令行输入一个字符串,将该字符串转换为double型数据,当数据不在【0,100】之间时抛出一个异常,采用适当的机制来捕获并
处理异常。可以用现成的异常也可以自定义异常。
我写的垃圾代码有啥错误,运行不了,请各位指导一下
package ex_8;
import java.util.InputMismatchException;
import java.util.Scanner;
public class IntegerExcep {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
try {
System.out.print("请输入一个数字:");
String str=in.next();
double d=Double.parseDouble("str");
System.out.println("转换后:"+ d);
}
catch(InputMismatchException e1) {
System.out.println("异常1:输入不在0-100内!");
}
finally {
in.close();
}
}
}
你没有抛异常
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
try {
System.out.print("请输入一个数字:");
String str=in.next();
double d=Double.parseDouble("str");
System.out.println("转换后:"+ d);
if(d<0||d>100){
throw InputMismatchException();
}
}
catch(InputMismatchException e1) {
System.out.println("异常1:输入不在0-100内!");
}
finally {
in.close();
}
}
让你抛出异常,不是让你捕获异常,应该用throw,不是try
double d=Double.parseDouble("str");
改为double d=Double.parseDouble(str);
str是个变量不是字符串
double d=Double.parseDouble(str); // 本来就是字符串变量了,你写的"str"是一个常量,而str才是变量
我给你简单改了一下,你看看:
Scanner in = new Scanner(System.in);
try {
System.out.print("请输入一个数字:");
String str = in.next();
double d = Double.parseDouble(str);
System.out.println("转换后:" + d);
if(d<0 || d>100){
throw new InputMismatchException("输入不在0-100内");
}
} catch (InputMismatchException e1) {
System.out.println(e1.toString());
} finally {
in.close();
}