gpt4 book ai didi

java - 为什么我的程序在线程 "AWT-EventQueue-0"java.util.NoSuchElementException 中显示异常?

转载 作者:太空宇宙 更新时间:2023-11-04 10:59:58 26 4
gpt4 key购买 nike

我有一个程序,让用户输入字符串和分隔符,然后程序将根据用户的分隔符分割字符串,并在 joption 中显示不包含分隔符的字符串。

但是 joption 没有显示输出,因为错误显示:

Exception in thread "AWT-EventQueue-0" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:862)
at java.util.Scanner.next(Scanner.java:1371)

我该怎么办?

public ArrayList<String> token()
{

String str=txtString.getText().toString();
String del=txtDelimiter.getText().toString();
ArrayList <String> myTokens = new ArrayList <String> ();

Scanner scan = new Scanner(str);
scan.useDelimiter(del);

while(scan.hasNext()){
System.out.println(scan.next());
myTokens.add(scan.next());
}
scan.close();
return myTokens;
}

从另一个方法调用的方法:

btnShowTokens.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {

ArrayList <String> stringpass=token();

JOptionPane.showMessageDialog (null, stringpass, "The posible tokens", JOptionPane.INFORMATION_MESSAGE);
}
});

最佳答案

调用 next() 会消耗来自扫描器的 token 。因此,在这里,循环的每次迭代都会尝试从扫描仪获取两个 token - 一个用于打印,一个用于添加到 myTokens。如果您有奇数个 token ,您将收到此异常。

更好的方法是将 token 提取到局部变量,然后在需要的地方使用它。例如:

while (scan.hasNext()) {
String str = scan.next();
System.out.println(str);
myTokens.add(str);
}

关于java - 为什么我的程序在线程 "AWT-EventQueue-0"java.util.NoSuchElementException 中显示异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47003386/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com