Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中如何将StringTokenizer结果带到ArrayList?_Java_Arraylist_Stringtokenizer - Fatal编程技术网

在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