我正在为静态方法执行扫描程序,并发生此异常:
Exception in thread "main" java.util.NoSuchElementException: No line found
我的修改方法倾向于从控制台获得2个字符串作为输入,但它不起作用。
注意:我没有使用scanner.close();
static ArrayList<Book> modBook(){
Book tempbook = Book.searchTitle();
if(tempbook !=null){
Scanner sc = new Scanner(System.in);
int i = BookList.indexOf(tempbook);
System.out.println("Please enter title:");
String booktitle = sc.nextLine();
System.out.println("Please enter author:");
String bookauthor = sc.nextLine();
tempbook.setTitle(booktitle);
tempbook.setAuthor(bookauthor);
BookList.set(i, tempbook);
}
return BookList;
}
我的搜索方法:
static Book searchTitle(){
try (Scanner input = new Scanner(System.in)) {
String booktitle;
System.out.println("Please enter title:");
booktitle = input.nextLine();
for(Book b : BookList){
if(b.getTitle() != null && b.getTitle().equals(booktitle)){
System.out.println(b.toString());
return (Book) b;
}
}
}catch(Exception e){e.getMessage(); return null;}
System.out.println("not found");
return null;
}
答案 0 :(得分:2)
您在静态方法中使用了两个 java.util.Scanner 实例。您只需使用 java.util.Scanner 的一个实例。删除java.util.Scanner的两个实例,并将其添加为全局变量。
static Scanner input = new Scanner(System.in);
然后使用输入 ONLY 来完成代码中的所有读数。确保在完成输入后关闭输入。
答案 1 :(得分:1)
更新:尝试使用资源块关闭曲线括号@media (orientation: portrait) {
.reorientMessage{
visibility: visible;
}
.mainContent{
visibility: hidden ;
}
}
@media (orientation: landscape) {
.reorientMessage{
visibility: hidden;
}
.mainContent{
visibility: visible ;
}
}
内的内容。因此,它确实关闭了InputStream,然后将其删除。谢谢
<div class="reorientMessage">please reorient etc..</div>
<div class="mainContent">normal stuff here</div>