我已经问了几个有关此for循环的问题:
String[] book = new String [ISBN_NUM];
bookNum.replaceAll("-","");
if (bookNum.length()!=ISBN_NUM)
throw new ISBNException ("ISBN "+ bookNum + " must be 10 characters");
for (int i=0;i<bookNum.length();i++)
{
if (Character.isDigit(bookNum.charAt(i)))
book[j]=bookNum.charAt(i); //this is the problem right here
j++;
if (book[9].isNotDigit()||
book[9]!="x" ||
book[9]!="X")
throw new ISBNException ("ISBN " + bookNum + " must contain all digits" +
"or 'X' in the last position");
}
不会编译。我从另一个问题中得到的答案告诉我,发生错误的那行在那bookNum.charAt(i)中是一个(不可变的)字符串,而我无法以这种方式将值放入书本数组中。我需要做的是检查一个ISBN号(bookNum)以查看所有数字,除了最后一位可以是'x'(有效的ISBN)。这是最好的方法吗?如果是这样,我到底在做什么错?如果没有,哪种方法会更好?
最佳答案
book
的类型为String[]
(字符串数组),bookNum.charAt(i)
返回char
。您不能从String
分配char
。
改为使用book[j] = String.valueOf(bookNum.charAt(i))
。
另外,您可能想更改第一个错误:
throw new ISBNException ("ISBN "+ bookNum + " must be " + ISBN_NUM + " characters");