我有点卡住了。我已经掌握了方法的概念;理解他们的目的但仍然不确定如何编码它。以下是我的代码的一部分,我需要指导。我正在尝试创建一个可以保存角色的方法,并且根据选择的切换选项,它将返回金额。我有四个就业岗位,都有不同的薪资水平。我已经评论了角色方法的错误。如果我可以纠正这个并使其工作,那么我可以完成这个程序:)
import java.util.Scanner;//allows input from the keyboard
import java.text.*;
class Wage_Method_2
{
public static void main(String[]args)
{
Scanner input = new Scanner(System.in);
DecimalFormat fmt = new DecimalFormat("0.00");
double normHrs = 0, overHrs = 0, bonusHrs = 0, actualHrs = 0, cash=0, overPay =0, bonusPay = 0, grossWage = 0,vat23 = 0, netWage =0;
String empName,nextEMP = "y", manager, superVisor, teamLead, general;
while (nextEMP.equalsIgnoreCase("y"))
{
System.out.print("Please enter an employee's first name: ");
empName = input.next();//their name
System.out.print("Please enter "+empName+"'s employment ID: ");
int job = input.nextInt();
System.out.print("Please enter their total hours worked: ");
actualHrs = input.nextDouble();
double basicPay = rate (5.75)*actualHrs;
System.out.println("Basic Pay: "+basicPay);
System.out.println("\nWould you like to log hours for another employee?");
nextEMP = input.next();
if (nextEMP.equalsIgnoreCase("n"))
{
System.out.println("Thank you, the hours have been successfully logged.");
}
}// end of whileloop
}// end of class
public static double rate (double cash String jobrole)// when compiling these errors appear: error: ')' expected and error: <identifier> expected
{
switch (jobrole)
{
case 1:
cash = 5.75;
case 2:
cash = 5.75*1.1;
case 3:
cash = 5.75*1.25;
case 4:
cash = 5.75*1.42;
break;
}
return (cash);
}
}// end of program
答案 0 :(得分:1)
您需要在类中定义一个方法,而不是在它之外。将其移到外部右侧花括号内。
您的代码中还存在许多其他问题。
我建议使用像Netbeans这样的IDE,它们是免费下载的,语法突出显示和内联错误报告将使您的生活更轻松。我建议Netbeans使用它是最直观的,你也可以考虑其他选项,比如Eclipse。
将文件加载到编辑器中,依次查看每个错误。谷歌他们并找出他们的意思,然后尝试纠正他们。
答案 1 :(得分:1)
这里有一些错误:
switch
使用String
并且值为整数。 (另请注意,在Java SE7中首次引入了字符串切换。)
public static double rate (double cash, String jobrole)
// ^
{
switch (jobrole)
{
case "1": return 5.75;
case "2": return 5.75*1.1;
case "3": return 5.75*1.25;
case "4": return 5.75*1.42;
default: return 0; // some default.
}
}
其他人已经声明该方法必须在一个类中。它是。代码中的注释是错误的。你上线的错误是因为你没有逗号。
在您的代码中,您永远不会中断交换机。在switch语句中,执行会逐个进行,因此如果jobrole
的值为"3"
,则代码将执行:
cash = 5.75*1.25;
cash = 5.75*1.42;
break;
所以要解决这个问题,我们只返回值而不是设置局部变量。另一种选择是在每个break;
之后只需case
。
另请注意,在这种情况下,您并不需要传递值cash
,因为它从未被使用过(它只是被覆盖)。:
public static double rate( String jobrole )
{
//...
}