2010-09-10 37 views
1

我不断收到以下错误: 找不到符号 可变找到Java错误当试图使用从一个方法作为一个项目的回报率在if语句

无法找到符号 方法的GetData(INT)

我确信我正在使这种方式比现在更困难,但我不知道如何使这项工作,以便通过数组搜索返回,可以看到和评估的if语句。

    //assigns manager identification 
        manID = keyboard.nextInt(); 

     //Fibonacci binary array for passwords 
     int[] passWArray = {00000000,00000001,00000001,00000010,00000011,00000101,00001000,00001101}; 

     //item = find.getdata(manID); 

     if (getdata(manID) != -1) 
     { 
     //Do work here 
     dblPayRate = 10.85; 
     dblGrossPay = (intHours * dblPayRate) + (15.00); 
     dblTaxes = dblGrossPay * 0.19; 
     dblGrossPay -= dblTaxes; 

     //Print information to user 
     System.out.print("\n\n$" + df2.format(dblTaxes) + 
     " was withheld from this paycheck in taxes after working "+ intHours + " hours.\n\n"); 
     System.out.print("The amount \"Employer Here\" owes you is $" + df2.format(dblGrossPay) + "\n"); 
     } 
     else 
     { 
     // Dialog box for incorrect password 
     JOptionPane.showMessageDialog(null, "Invalid Entry! Contact the BOFH!"); 
     //exits program (Note: needed for any JOptionPane programs) 
     System.exit(0); 
     } 
    }// end of long if statement for >50 hours 
}//end of main method 

public int find(int[] passWArray, int manID) 
{ 
    //search for manID in passWArray array 
    for (int index = 0; index < passWArray.length; index++) 

     if (passWArray[index] == manID) 

      return manID; 
    //-1 indicates the value was not found  
    return -1; 

}// end of find method 
+4

您的getdata方法在哪里定义? – 2010-09-10 05:43:11

+0

您错过了代码的开始部分,因此很难知道真正的错误,但是关于“long if if语句结束”的注释是在* not * if语句结尾的行中。那是否在谈论其他一些陈述?另外,除此之外,您是否知道passWArray中的值是八进制的,而不是二进制(或十进制)? – 2010-09-10 05:51:12

+2

如果您更关注代码风格,那么您的代码将更易于阅读...并查找语法错误。 – 2010-09-10 05:51:39

回答

1

变化

if (getdata(manID) != -1) 

if (find(passWArray , manID) != -1) 

BTW这些数字并不神奇地变成二进制的,因为它们只包含0和1。这里有一个提示:

int thirteen = Integer.parseInt("00001101", 2) 

编辑:在回答你的下一个错误

现在做的方法静态:

public static int find(int[] passWArray, int manID) 

最终,你可能要考虑一下你的“面向对象设计',只需使用main()方法作为入口点即可。在主体内部,创建一个类的实例并让它工作。通过这种方式,您可以像封装和继承一样使用O-O的功能,并且不必将所有内容都设为静态。

EDIT2:有感

你的程序似乎有以下 '动作':

  • 用户交互
  • 认证
  • 计算

还有似乎是在您的域名中出现以下“事物”:

  • 用户
  • 密码
  • 键盘
  • 显示器(命令行和屏幕)
  • 计算

拇指为一种面向对象的设计一个很好的规则是用于将一些的'事物'和'行为'已经在你的域中出现在类中。一个好的类有一个单一的职责,尽可能少地与其他类共享数据和方法(这称为信息隐藏)。

下面是我想到的一个类图:

  • 用户(代表一个用户,包含一个单场“密码”)
  • 身份验证(验证用户,包含了允许密码的列表)
  • 控制台(所有用户交互,或者使用的System.out /或摆动,但不要混合使用它们)
  • 计算器(它计算狗屎)
+0

感谢if语句的帮助,是的,我希望数组是那些数字集,而不是解析。不过谢谢。 – Peter 2010-09-10 07:06:38

+0

可悲的是另一个错误, – Peter 2010-09-10 07:10:17

+0

非静态方法find(int [],int)不能从静态上下文中引用。 – Peter 2010-09-10 07:12:09

相关问题