线程异常 "main" java.util.NoSuchElementException
Exception in thread "main" java.util.NoSuchElementException
我有一个这样的文件
/1/a/a/a/Female/Single/a/a/January/1/1920/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a
这是我的 StringTokenizer 代码:
public void retrieveRecords(){
String holdStr="";
try {
fileRead=new FileReader(fileNew);
read=new Scanner(fileRead);
while(read.hasNext()){
holdStr+=read.nextLine()+"\n";
}
read.close();
StringTokenizer strToken=new StringTokenizer(holdStr, "/");
while(strToken.hasMoreElements()){
rows=new Vector();
for(int i=0; i<column.length; i++){
rows.add(strToken.nextElement());
}
ViewTablePanel.tblModel.addRow(rows);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
我实际上不知道问题出在哪里,而且我研究了 nosuchelementexception
会发生的所有原因,但我没有做所有这些为什么它不起作用的原因。任何建议都会开放,非常感谢:)
while(read.hasNext()){
holdStr+=read.nextLine()+"\n";
}
从上面看,扫描器读取没有任何分词器,因此,read.hasNext() throws NoSuchElementEXception read.hasNextLine() 应该可以正常工作
异常java.util.NoSuchElementException
抛出此异常表明分词器中没有更多元素。
while(strToken.hasMoreElements()){
rows=new Vector();
for(int i=0; i<column.length; i++){
rows.add(strToken.nextElement()); //Exception will throw on this line
}
ViewTablePanel.tblModel.addRow(rows);
}
在您的 while
循环中,您有使用 hasMoreElements()
检查更多元素的条件。但是在 while 循环中你有 for 循环多次调用 nextElement()
。如果标记器中没有元素,那么 nextElement()
将抛出 java.util.NoSuchElementException
.
解决方案 :在for循环中添加一些条件来检查tokenizer中的元素。
我有一个这样的文件
/1/a/a/a/Female/Single/a/a/January/1/1920/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a
这是我的 StringTokenizer 代码:
public void retrieveRecords(){
String holdStr="";
try {
fileRead=new FileReader(fileNew);
read=new Scanner(fileRead);
while(read.hasNext()){
holdStr+=read.nextLine()+"\n";
}
read.close();
StringTokenizer strToken=new StringTokenizer(holdStr, "/");
while(strToken.hasMoreElements()){
rows=new Vector();
for(int i=0; i<column.length; i++){
rows.add(strToken.nextElement());
}
ViewTablePanel.tblModel.addRow(rows);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
我实际上不知道问题出在哪里,而且我研究了 nosuchelementexception
会发生的所有原因,但我没有做所有这些为什么它不起作用的原因。任何建议都会开放,非常感谢:)
while(read.hasNext()){
holdStr+=read.nextLine()+"\n";
}
从上面看,扫描器读取没有任何分词器,因此,read.hasNext() throws NoSuchElementEXception read.hasNextLine() 应该可以正常工作
异常java.util.NoSuchElementException
抛出此异常表明分词器中没有更多元素。
while(strToken.hasMoreElements()){
rows=new Vector();
for(int i=0; i<column.length; i++){
rows.add(strToken.nextElement()); //Exception will throw on this line
}
ViewTablePanel.tblModel.addRow(rows);
}
在您的 while
循环中,您有使用 hasMoreElements()
检查更多元素的条件。但是在 while 循环中你有 for 循环多次调用 nextElement()
。如果标记器中没有元素,那么 nextElement()
将抛出 java.util.NoSuchElementException
.
解决方案 :在for循环中添加一些条件来检查tokenizer中的元素。