字符串转换成double型数据

原问题:从命令行输入一个字符串,将该字符串转换为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();
        }