我可以就将方法引入我的工资计划提供一些指导吗?

时间:2014-04-09 14:40:32

标签: java methods

我有点卡住了。我已经掌握了方法的概念;理解他们的目的但仍然不确定如何编码它。以下是我的代码的一部分,我需要指导。我正在尝试创建一个可以保存角色的方法,并且根据选择的切换选项,它将返回金额。我有四个就业岗位,都有不同的薪资水平。我已经评论了角色方法的错误。如果我可以纠正这个并使其工作,那么我可以完成这个程序:)

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

2 个答案:

答案 0 :(得分:1)

您需要在类中定义一个方法,而不是在它之外。将其移到外部右侧花括号内。

您的代码中还存在许多其他问题。

我建议使用像Netbeans这样的IDE,它们是免费下载的,语法突出显示和内联错误报告将使您的生活更轻松。我建议Netbeans使用它是最直观的,你也可以考虑其他选项,比如Eclipse。

将文件加载到编辑器中,依次查看每个错误。谷歌他们并找出他们的意思,然后尝试纠正他们。

答案 1 :(得分:1)

这里有一些错误:

  1. 参数列表必须以逗号分隔
  2. 您不能switch使用String并且值为整数。 (另请注意,在Java SE7中首次引入了字符串切换。)
  3. 你没有突破switch语句。 (这不是编译时错误,但几乎肯定是运行时错误,即代码没有按照您的预期进行。)
  4.  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 )
    {
         //...
    }