因此,我仍在忙于完成我的大任务(感谢大家帮助我解决循环问题)。现在,我开始着手制作一个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];这到底是什么意思?通常,这仅表示我在某处缺少花括号,但这次并非如此。编辑很抱歉看到明显的愚蠢问题。对于要求查看实际编译器消息的人,我将其放在顶部(埋藏),那是编译器预期的标识符但是我实际上将标记放在标识符周围,所以它取出了标识符一词,现在它说:“ ..但是编译器告诉我在方法调用中有一个期望值,而不是“ ..”。 ..但是编译器告诉我在方法调用处有一个标识符。输入最初是从文本字段输入的(我要输入问题),当我粘贴代码时,它说“在此处输入代码”,但我没有取出输入。抱歉 (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 好吧,看来您实际上缺少了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。此外,将编译器消息与您的问题一起发布是一个好主意;有人几乎马上要问你,所以就去做。另外,如果花一点时间阅读编译器消息,通常很明显是问题出在哪里,至少对于像语法错误这样简单的事情而言。 (adsbygoogle = window.adsbygoogle || []).push({}); 09-25 20:16