我正在尝试使用Queue
并从用户输入中读取字符串。不幸的是,它没有用。下面显示的代码有什么问题?
public static void main(String[] args) {
// TODO Auto-generated method stub
java.util.Queue q=new LinkedList<String>();
Scanner scan= new Scanner(System.in);
System.out.println("Enter a data");
String line=scan.nextLine();
Iterator<String> it=q.iterator();
while (it.hasNext()){
System.out.println("dongudeyim");
if (it.next().equals("(")){
q.add(line);
System.out.println(q.isEmpty());
}
if(q.iterator().equals(")")){
q.poll();
}
System.out.println(q.isEmpty());
}
}
答案 0 :(得分:0)
@javalearner
在您的代码中,
String line=scan.nextLine();
Iterator<String> it=q.iterator();
while (it.hasNext()){
此队列中没有添加任何值(q)。所以Iterator(它)每次都会返回 false 而while循环不会被执行。
在调用q上的迭代器方法之前,需要在队列中添加一些值。
if (it.next().equals("(")){
q.add(line);
System.out.println(q.isEmpty());
}
if(q.iterator().equals(")")){
q.poll();
}
在上面的部分中,不需要再次调用迭代器方法。您只需将it.next()的值存储在变量中,然后在if块中使用它。
String value = it.next();
if(value.equals(")")) {
https://beginnersbook.com/2014/06/java-iterator-with-examples/
这将有助于您更好地理解:)。
答案 1 :(得分:0)
感谢您的帮助。我这样解决了。
import java.util.*;
public class Queue {
public static void main(String[] args) {
// TODO Auto-generated method stub
java.util.Queue<String> q=new LinkedList<String>();
Scanner scan= new Scanner(System.in);
System.out.println("Enter a data");
String line=scan.nextLine();
System.out.println(line);
for (int i=0;i<line.length();i++){
if(line.charAt(i)==('(')){
q.add("(");
} else if(line.charAt(i)==(')')){
q.poll();
}
}System.out.println(q.isEmpty());
}
}