2014-12-19 99 views
2

出于某种原因,我的测试程序类不能识别我的方法类中的方法。帮帮我?我得到的错误,如“找不到符号法digitToBarCode(INT)”和“找不到符号法校验码(INT)”编译时找不到符号方法?

import java.util.Scanner; 

public class ZipCode 
{ 
public static int checkDigit(int zip) 
{ 
    int remaining = zip; 
    int sum = 0; 
    while (remaining > 0) { 
     sum += remaining % 10; 
     remaining /= 10; 
    } 
    return 10 - (sum % 10); 
} 

public static String digitToBarCode(int digit) { 
    if (digit == 1) 
    { 
     return ":::||"; 
    } 
    if (digit == 2) 
    { 
     return "::|:|"; 
    } 
    if (digit == 3) 
    { 
     return "::||:"; 
    } 
    if (digit == 4) 
    { 
     return ":|::|"; 
    } 
    if (digit == 5) 
    { 
     return ":|:|:"; 
    } 
    if (digit == 6) 
    { 
     return ":||::"; 
    } 
    if (digit == 7) 
    { 
     return "|:::|"; 
    } 
    if (digit == 8) 
    { 
     return "|::|:"; 
    } 
    if (digit == 9) 
    { 
     return "|:|::"; 
    } 
    if (digit == 0) 
    { 
     return "||:::"; 
    } 
    return ""; 

} 

} 

Tester类是这里

import java.util.Scanner; 

public class ZipCodeConverter 
{ 
public static void main(String[] args) 
{ 
    Scanner input = new Scanner(System.in); 
    System.out.print("Enter a zip code: "); 
    int zip = input.nextInt(); 
    int checkDigit = checkDigit(zip); 
    String digitPrint=digitToBarCode(checkDigit); 

     int specificNum1=(int)((zip/Math.pow(10, 5-1)) % 10); 
     String swag1=digitToBarCode(specificNum1); 


     int specificNum2=(int)((zip/Math.pow(10, 4-1)) % 10); 
     String swag2=digitToBarCode(specificNum2); 


     int specificNum3=(int)((zip/Math.pow(10, 3-1)) % 10); 
     String swag3=digitToBarCode(specificNum3); 


     int specificNum4=(int)((zip/Math.pow(10, 2-1)) % 10); 
     String swag4=digitToBarCode(specificNum4); 


     int specificNum5=(int)((zip/Math.pow(10, 1-1)) % 10); 
     String swag5=digitToBarCode(specificNum5); 

     String y=swag1+swag2+swag3+swag4+swag5; 


    System.out.println("|"+y+digitPrint+"|"); 
} 
} 

回答

3

当你调用的静态方法另一个指定的类的类名

int checkDigit = ZipCode.checkDigit(zip); 
String digitPrint=ZipCode.digitToBarCode(checkDigit); 

cannot find symbol因为编译器无法找到ZipCodeConvertercheckDigit方法,因为它的EXI st in ZipCode class

例如在您的代码中,您有一条语句Math.pow(10, 3-1))Math是类名和pow()是一个静态方法在它.so你叫它Math.pow()

0

如何调用方法checkDigit(zip);是错误的,checkDigit(zip)是一个静态方法,所以它意味着它由您创建它的类所拥有。所以,

您可以通过

 int checkDigit = ZipCode.checkDigit(zip); 
    String digitPrint = ZipCode.digitToBarCode(checkDigit); 

访问它,也可以扩展ZipCode,因为你是这也是一个静态调用它里面的主:

 // this will able you to call method directly 
    public class ZipCodeConverter extends ZipCode{ 
0

您必须添加德班名称前面的方法:

​​

必须是

int checkDigit = ZipCode.CcheckDigit(zip); 
String digitPrint=ZipCode.digitToBarCode(checkDigit);