【问题标题】:why is it giving me errors when I input decimal hours?为什么输入十进制小时数时出现错误?
【发布时间】:2015-09-24 02:39:59
【问题描述】:

对不起,伙计们,这是我编程的第一周,我的任务是设计一个程序,根据用户输入计算正常工资和加班工资,但是当我以 5.5 小时或费率计算时,它给了我错误,我真的没有明白为什么

如果有办法修复错误,那么如何在输出整数的末尾去掉 .0?非常感谢,老师只是假设我参加AP CS的时候我们知道所有的东西,这是去年“入门课”的复习,所以我有点不知所措,如果还有时间,请你解释一下背后的机制“双倍的”?到目前为止,据我了解,这意味着您可以使用小数,而不是 int,您只能在此处放置整数代码

`

import javax.swing.JOptionPane;

public class Salary
{
    public static void main(String[] args)
    {
        String s1, s2;
            double number1, number2;

            s1=JOptionPane.showInputDialog("Enter the number of hours worked");
            s2=JOptionPane.showInputDialog("Enter the rates per hour");

            number1 = Integer.parseInt ( s1); 
            number2 = Integer.parseInt ( s2); 

            double elseregularp = ( 40*number2);
            double regularp = ( number1*number2);
            double othours = (number1-40);
            double othourspay = ( number2* 15/10.0);


            if( number1 <= 40)
            {
                System.out.println("YOU WORKED "+number1+" HOURS" );
                System.out.println("YOU EARNED $"+number1 * number2+" REGULAR PAY");
            }
            else 
            {
                System.out.println("YOU WORKED " + number1+" HOURS");
                System.out.println("YOU EARNED $"+elseregularp+" REGULAR PAY");
                System.out.println("AND $" +(othours)*(othourspay)+ " IN OVERTIME");
                System.out.println("YOUR TOTAL CHECK IS $" + ((elseregularp)+(othours)*(othourspay)));
            }
    }
}

`

【问题讨论】:

  • Integer.parseInt(...) 方法只解析整数字符串,不解析浮点数学字符串。为此,您需要Double.parseDouble(...)
  • 首先,总是告诉我们您的错误。没有人想猜测或尝试阅读代码来弄清楚。其次,确定那些错误中给出的相应代码行。第三,阅读这些错误并尝试找出它们。大多数都不难理解并且是自我描述的。最后,查看代码,看看你所做的是否有意义。

标签: java


【解决方案1】:

integer.parseInt(...) 正在接受一个不是正确输入的字符串值。因此将其更改为 parseDouble 以使其正常工作。

修改后的最终代码。

integer.parseInt(...) 改为 Double.parseDouble(...)

import javax.swing.JOptionPane;

public class Salary
{
    public static void main(String[] args)
    {
        String s1, s2;
        double number1, number2;

        s1=JOptionPane.showInputDialog("Enter the number of hours worked");
        s2=JOptionPane.showInputDialog("Enter the rates per hour");

       // number1 = Integer.parseInt ( s1); 
       // number2 = Integer.parseInt ( s2); 
        number1=Double.parseDouble(s1);
        number2=Double.parseDouble(s2);
        double elseregularp = ( 40*number2);
        double regularp = ( number1*number2);
        double othours = (number1-40);
        double othourspay = ( number2* 15/10.0);


        if( number1 <= 40)
        {
            System.out.println("YOU WORKED "+number1+" HOURS" );
            System.out.println("YOU EARNED $"+number1 * number2+" REGULAR PAY");
        }
        else 
        {
            System.out.println("YOU WORKED " + number1+" HOURS");
            System.out.println("YOU EARNED $"+elseregularp+" REGULAR PAY");
            System.out.println("AND $" +(othours)*(othourspay)+ " IN OVERTIME");
            System.out.println("YOUR TOTAL CHECK IS $" + ((elseregularp)+(othours)*(othourspay)));
        }
}

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多