我有另一个错误,需要意外类型:找到变量:值,我无法弄清楚原因。代码如下:
public class ISBNText extends JTextField
{
protected static final int ISBN_NUM=10;
protected static String bookNum;
protected JTextField bookText;
protected String valid;
public ISBNText()
{
super(20);
}
public String getISBN()
{
bookNum = getText();
return bookNum;
}
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(bookNum)=false) //////////COMPILER ERROR HERE////////
throw new ISBNException ("ISBN " + bookNum + " is invalid.\n" +
"ISBN " + bookNum + " should be " + validnum);
if (check=true) return bookNum;
}
public boolean checkDigit (String bookNum)
{
boolean status;
double total=0.0;
char[] check = {0,1,2,3,4,5,6,7,8,9,X};
int[] checkNums= {0,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];
}
if ((checkNums[9] % 11)==check[9])
status = true;
else
status=false;
}
}
此程序用于检查用户输入的ISBN号的有效性。我不明白为什么它说它找到了值并且它期望一个变量,因为bookNum是一个变量。我毫不怀疑这是因为我的知识有限。希望你们能再帮助我一次。
答案 0 :(得分:3)
这项任务(没有意义)
if (checkDigit(bookNum)=false)
应该是一个等式
if (checkDigit(bookNum)==false)
或better,只是表达式
if (!checkDigit(bookNum))
答案 1 :(得分:1)
checkDigit(bookNum)=false
应该是!checkDigit(bookNum)
同样的事情if (check=false)
应该是if(!check)
另一个用if(check = true)
此外,
for (int i=0;i<bookNum.length;i++)
{
check(i)=bookNum[i];
total+=check[i]*checkNums[i];
}
应该是:
for (int i=0;i<bookNum.length();i++)
{
(something, but definitely not a function result)=bookNum.charAt(i);
total+=check[i]*checkNums[i];
}
另外,
char[] check = {0,1,2,3,4,5,6,7,8,9,X}; // X won't compile
另外,
checkDigit没有回复。
另外,
未声明validnum
答案 2 :(得分:1)
您需要使用charAt
,而不是bookNum
方法中checkDigit
变量的数组索引表示法。字符串不是数组。
答案 3 :(得分:0)
您需要使用==
,而不是=
。前者检查是否相等,后者是赋值运算符。或者,您可以执行if (!checkDigit(bookNum))
,而不是与false
明确比较。