我正在尝试创建一个程序,该程序从用户获取整数值,然后打印计算出的解决方案。更具体地说,将一周内的工作小时数乘以佣金,如果小时数超过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);
}
}
答案 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;
}
问题是,如果你不在这些花括号中包含if
和else
之后的内容,那么只会看到每个花括号之后的第一个语句。在上面未经修正的示例中,将始终计算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);
}