方法声明给出错误。是什么赋予了?

时间:2011-02-18 02:04:39

标签: java

所以我仍然忙于完成我的大任务(感谢大家帮我弄清楚我的循环问题)。现在我开始制作一个checkDigit()方法,用于验证isbn#上的校验位是否有效(我刚刚开始搞砸了)。这是问题:我试图编译它,但编译器告诉我在方法调用中有预期的。这是我的初学者代码的片段:

    private String validateISBN(String bookNum)throws ISBNException
{
    boolean check=false;
    bookNum.replaceAll("-","");
    if (bookNum.length()!=ISBN_NUM)
        throw new ISBNException ("ISBN "+ bookNum + " must be 10 characters");
    for (int i=0;i<bookNum.length()-1;i++)
    {
        if (Character.isDigit(bookNum.charAt(i)))
            check=true;
    }  
    if (bookNum.charAt(9)=='X') check=true;
    if (Character.isDigit(bookNum.charAt(9))) check=true;
    if (check=false) throw new ISBNException ("ISBN " + bookNum + " must contain all digits" + 
                "or 'X' in the last position");
    if (checkDigit()=false)
            throw new ISBNException ("ISBN " + bookNum + " is invalid.\n" + 
                "ISBN " + bookNum + " should be " + validnum);
    if (check=true) return bookNum;
}                             
public boolean checkDigit (bookNum)
{
    double total=0.0;
    char[] check   = {1,2,3,4,5,6,7,8,9,X};
    int[] checkNums= {1,2,3,4,5,6,7,8,9,10};
    for (int i=0;i<bookNum.length;i++)
        check(i)=bookNum[i];
        total+=check[i]*checkNums[i];  

这究竟是什么意思?通常情况下,这只意味着我在某处错过了大括号,但这次并非如此。

修改

抱歉这个明显而愚蠢的问题。对于那些要求查看实际编译器消息的人,我把它放在最顶层(埋藏),那就是编译器

预期的标识符

但实际上我把&lt;&gt;标识符周围的标签,所以它取出了单词标识符,现在它说,“....但编译器告诉我在方法调用中有预期,而不是,”....但编译器告诉我在方法调用中有一个预期的标识符。

原来在开头的输入来自文本字段(我正在输入问题),因为当我粘贴代码时,它说'在这里输入代码',而我没有取出输入。

抱歉

3 个答案:

答案 0 :(得分:3)

好吧,看来你实际上错过了checkDigit方法的结束大括号,加上enter方法之前的迷路validateISBN做了什么?此外,您需要在bookNum方法中输入checkDigit参数,即checkDigit(String bookNum)

最后,你试图在不传递任何参数的情况下调用checkDigit()

if (checkDigit()=false)
            throw new ISBNException ("ISBN " + bookNum + " is invalid.\n" + 
                "ISBN " + bookNum + " should be " + validnum);

您需要在此方法调用中提供bookNum

此外,将编译器消息与您的问题一起发布是一个很好的主意;有人几乎立即要求你这样做,所以就这样做吧。另外,如果你花一点时间阅读编译器消息,通常很明显是什么问题,至少对于像语法不正确这样简单的事情。

答案 1 :(得分:1)

乍一看,您似乎在enter的方法签名之前有一个迷路validateISBN,并且您还缺少bookNum checkDigit参数的类型声明方法。

答案 2 :(得分:1)

如果将'X'放在检查数组的单引号中,是否可以解决问题?