如何根据java中的输入生成计算输出?

时间:2013-09-07 22:33:06

标签: java

我正在尝试创建一个程序,该程序从用户获取整数值,然后打印计算出的解决方案。更具体地说,将一周内的工作小时数乘以佣金,如果小时数超过35小时,则将佣金乘以1.5倍。计算是正确的,我只是不能把时间变成一个输入形式,这样我就可以将它相乘。

我是Java的新手,一直在寻找解决方案。非常感谢帮助。

以下是我目前使用的代码:     包chapter1_prog4;

import java.util.Scanner;

/**
*
* @author Brian
*/
public class Chapter1_Prog4 {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {

    Scanner userInput = new Scanner(System.in);

    String hours;
    System.out.print("Enter amount of hours worked for the week:");
    hours = userInput.next();

    double regpay, earned, overh;

    regpay = 15;
    earned = 0;
    overh = 0;

    if (hours<=35)
        earned = (hours*regpay);
    else
        overh = ((hours-35)*(regpay*1.5));
        earned = (35*regpay)+overh;

    System.out.println( "Amount earned before taxes: $" + earned);

 }
 }

3 个答案:

答案 0 :(得分:2)

您试图将String乘以double,但这不起作用。尝试输入hours

的一种数字类型

更改以下部分

String hours;
System.out.print("Enter amount of hours worked for the week:");
hours = userInput.next();

double hours;
System.out.println("Enter amount of hours worked for the week: "); 
hours = userInput.nextDouble();

if语句中也有错误

更改

if (hours<=35)
    earned = (hours*regpay);
else
    overh = ((hours-35)*(regpay*1.5));
    earned = (35*regpay)+overh;

if (hours<=35) {
    earned = (hours*regpay);
} else {
    overh = ((hours-35)*(regpay*1.5));
    earned = (35*regpay)+overh;
}

问题是,如果你不在这些花括号中包含ifelse之后的内容,那么只会看到每个花括号之后的第一个语句。在上面未经修正的示例中,将始终计算earned = (35*regpay)+overh;,因为它不在else语句的范围内

答案 1 :(得分:0)

字符串不能与Integers一样使用,在Java下面的行无法编译

if ("string" <= 100)

许多解决方案都适用,这是一个

这一行之后:

hours = userInput.next();

添加以下行:

Integer hoursInteger = Integer.valueOf(hours);

并将所有引用从几小时重构为hoursInteger

答案 2 :(得分:0)

如前所述,来自用户的输入是一个String,可以转换为float或int。这是一个例子:

String hours = "3.2";
int integer = Integer.parseInt(hours);
float floatingPointNumber = Float.parseFloat(hours);

但是,为了安全起见,如果你这样做,你应该做一个try-catch,这样如果用户输入的数字不是数字,你的程序就不会崩溃。这是一个例子:

String test = "r";
try{
int integer = Integer.parseInt(test);
}catch (NumberFormatException e) {
    System.out.println(e);
}