提问人:Ocean Man 提问时间:1/11/2022 更新时间:1/11/2022 访问量:44
为队列创建用户方法并遇到此错误
making user methods for queue and encounterd this error
问:
我在制作方法时由于某种原因遇到了这个错误。在此处输入图像描述
有人可以帮我解决这个问题吗,这是我使用的代码
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Queue<Integer> q= new LinkedList<Integer>();
NQ(q);
displayQ(q);
DQ(q);
displayQ(q);}
public static void NQ(Queue<Integer> q){
Scanner scan = new Scanner(System.in);
System.out.print("Number of digits to be added: ");
int digits= scan.nextInt();
System.out.println("Enter numbers to be Added:");
for (int i = 0; i < digits; i++) {
q.add(scan.nextInt());
}
scan.close();
}
public static void DQ(Queue<Integer> q){
Scanner scan = new Scanner(System.in);
System.out.print("Number of digits to be remove: ");
int digits= scan.nextInt();
for (int i = 0; i < digits; i++) {
q.remove();
}
scan.close();
}
public static void displayQ(Queue<Integer> q) {
System.out.println(q);
}}
这是代码的输出
Number of digits to be added: 5
Enter numbers to be Added: 1 2 3 4 5
[1, 2, 3, 4, 5]
Number of digits to be remove: Exception in thread "main" java.util.NoSuchElementException
at java.base/java.util.Scanner.throwFor(Scanner.java:937)
at java.base/java.util.Scanner.next(Scanner.java:1594)
at java.base/java.util.Scanner.nextInt(Scanner.java:2258)
at java.base/java.util.Scanner.nextInt(Scanner.java:2212)
at Test.DQ(Test.java:31)
at Test.main(Test.java:12)
我该怎么办?!?!?!?
答:
0赞
Shahzad
1/11/2022
#1
这里的问题是您使用 .java.util.Scanner
关闭扫描程序后,它也会关闭您传递的输入流(在本例中)。您可以在文档中阅读有关此内容的更多信息。System.in
解决此问题的一种方法是创建一个 Scanner 实例,并在需要的任何位置使用它。在你的特殊情况下,你可以做一些事情,如下所示:
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Queue<Integer> q= new LinkedList<Integer>();
NQ(q, scanner);
displayQ(q);
DQ(q, scanner);
displayQ(q);
scanner.close();
}
您需要更新并接受扫描程序(而不是创建新实例),并且不要在这些方法中关闭扫描程序。NQ
DQ
评论