在Java中如何将StringTokenizer结果带到ArrayList?
我想将在Java中如何将StringTokenizer结果带到ArrayList?,java,arraylist,stringtokenizer,Java,Arraylist,Stringtokenizer,我想将StringTokenizer结果放入ArrayList。我使用了下面的代码,并在第一个print语句中,stok.nextToken()打印正确的值。但是,在ArrayList的第二个print语句中,给出的错误为java.util.NoSuchElementException。 我如何将这些结果带到ArrayList import java.io.BufferedReader; import java.io.InputStreamReader; import java
StringTokenizer
结果放入ArrayList
。我使用了下面的代码,并在第一个print语句中,stok.nextToken()
打印正确的值。但是,在ArrayList的第二个print语句中,给出的错误为java.util.NoSuchElementException
。
我如何将这些结果带到ArrayList
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;
public class Test {
public static void main(String[] args) throws java.io.IOException {
ArrayList<String> myArray = new ArrayList<String>();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Enter : ");
String s = br.readLine();
StringTokenizer stok = new StringTokenizer(s, "><");
while (stok.hasMoreTokens())
System.out.println(stok.nextToken());
// -------until now ok
myArray.add(stok.nextToken()); //------------???????????
System.out.println(myArray);
}
}
导入java.io.BufferedReader;
导入java.io.InputStreamReader;
导入java.util.ArrayList;
导入java.util.StringTokenizer;
公开课考试{
公共静态void main(字符串[]args)引发java.io.IOException{
ArrayList myArray=新的ArrayList();
BufferedReader br=新的BufferedReader(新的InputStreamReader(System.in));
系统输出打印(“输入:”);
字符串s=br.readLine();
StringTokenizer stok=新的StringTokenizer,“>引用以下内容的javadoc:
StringTokenizer
是一个遗留类,出于兼容性原因保留该类,尽管新代码中不鼓励使用该类。建议寻求此功能的任何人使用String
的split
方法或java.util.regex包
“新代码”是指为Java1.4或更高版本(即古代)编写的任何代码
while
循环将从标记器中提取所有值。当您在提取完所有标记后调用nextToken()
时,为什么会出现异常
特别是考虑到nextToken()
的javadoc中的这句话:
如果此标记器的字符串中没有更多标记,则抛出NoTouchElementException
你可能是有意的吗
ArrayList<String> myArray = new ArrayList<>();
StringTokenizer stok = new StringTokenizer(s, "><");
while (stok.hasMoreTokens()) {
String token = stok.nextToken(); // get and save in variable so it can be used more than once
System.out.println(token); // print already extracted value
// more code here if needed
myArray.add(token); // use already extracted value
}
System.out.println(myArray); // prints list
ArrayList myArray=new ArrayList();
StringTokenizer stok=new StringTokenizer(s),“>查看您的while
语句。如果执行退出循环,这对stok
意味着什么?非常感谢您的回复。那么,我将如何将此结果导入ArrayList?stok
已被while循环完整读取,因此调用nextToken()
循环完成后当然会抛出一个(数据结束)错误。是否打算在循环内调用add()
调用?如果是,则缺少一些{brages}。否则,你想做什么?编辑问题并解释。谢谢你的回答。我不知道我的评论去了哪里,但打印ArrayList不会给你内存位置。它会打印列表的所有元素。即使它没有打印,也不会打印内存位置,因为像List@5ad6521c
是一个哈希函数de,不是内存位置!!您从未在评论中提到过这一点。感谢您的回复。我做了,我会再做一次:它将打印列表中的所有字符串。它不会打印哈希代码。是的,输出将在[]内打印。再次感谢您的回复。我错过了{大括号}当然。你没有错过大括号。add()
调用没有缩进,所以你甚至没有显示代码的意图。缩进对于代码的读者来说非常重要。因为代码是在问题中编写的,所以你甚至不清楚你想让代码做什么。缺少大括号是问题的最小部分。
for(String s : myArray){
System.out.Println(s);
}
ArrayList<String> myArray = new ArrayList<>();
StringTokenizer stok = new StringTokenizer(s, "><");
while (stok.hasMoreTokens()) {
String token = stok.nextToken(); // get and save in variable so it can be used more than once
System.out.println(token); // print already extracted value
// more code here if needed
myArray.add(token); // use already extracted value
}
System.out.println(myArray); // prints list