-2

问题

什么可能是我的问题的原因以及如何解决它:

如果用户输入的不是双精度值,我的程序就会崩溃。

程序主体

public class Annual
{
    public static void main(String[] args)
    {
        Scanner percent = new Scanner(System.in);
        System.out.println("Please enter annual sales:");
        double yearly = percent.nextInt();
        double T = 50000;
        double Amt;
        if (yearly.matches("[0-9]+") && yearly.length() > 2 && yearly.length() <= 8)
        {
            double YrPrcnt = yearly * .05;
            Amt = T + YrPrcnt;
            System.out.print("The Annual Payrate for employee is:");
            System.out.print(Amt);
        }
    }
}

错误信息

double 不能被取消引用”和“非法的表达式开头

我试过的

最简单的方法:检查用户输入是否为数字,如果是则提供错误消息。

系统信息

我在 NetBeans 7.2 中对此进行编码,并且是 Java 新手。

4

2 回答 2

2
yearly.matches

double(每年)是原始类型,您不能在原始类型上调用方法(匹配(或)任何)。

要检查输入是否为范围,您需要使用大于和小于运算符。

于 2012-11-18T03:59:30.797 回答
1
if (yearly.matches("[0-9]+") && yearly.length() > 2 && yearly.length() <= 8)

你在yearly这里被当作一个字符串。如果这是您的意图,则将用户输入读入字符串,对该字符串执行检查并将其转换为 double usingDouble.parseDouble()方法。

于 2012-11-18T04:01:12.917 回答