如何将 StringTokenizer 结果取到 Java 中的 ArrayList?
How to take StringTokenizer result to ArrayList in Java?
我想将 StringTokenizer
结果带到 ArrayList
。我使用了以下代码,并在第一个打印语句中 stok.nextToken()
打印了正确的值。但是,在 ArrayList 的第二个打印语句中给出错误 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);
}
}
ArrayList<String> myArray = new ArrayList<String>();
while (stok.hasMoreTokens()){
myArray.add(stok.nextToken());
}
不要在导致异常的 while 循环外调用 stock.nextToken 并在 System.out.println 中打印出 arraylist 不会帮助您必须使用 for 循环。
for(String s : myArray){
System.out.Println(s);
}
引用 StringTokenizer
的 javadoc:
StringTokenizer
is a legacy class that is retained for compatibility reasons although its use is discouraged in new code. It is recommended that anyone seeking this functionality use the split
method of String
or the java.util.regex package instead.
"New code" 表示为 Java 1.4 或更高版本编写的任何内容,即远古时代。
while
循环将从分词器中提取所有值。当您在 已经提取了所有标记之后调用 nextToken()
时,为什么您对出现异常感到惊讶?
特别是 nextToken()
的 javadoc 中的这句话:
Throws NoSuchElementException
if there are no more tokens in this tokenizer's string.
您可能是故意这样做的吗?
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
我想将 StringTokenizer
结果带到 ArrayList
。我使用了以下代码,并在第一个打印语句中 stok.nextToken()
打印了正确的值。但是,在 ArrayList 的第二个打印语句中给出错误 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);
}
}
ArrayList<String> myArray = new ArrayList<String>();
while (stok.hasMoreTokens()){
myArray.add(stok.nextToken());
}
不要在导致异常的 while 循环外调用 stock.nextToken 并在 System.out.println 中打印出 arraylist 不会帮助您必须使用 for 循环。
for(String s : myArray){
System.out.Println(s);
}
引用 StringTokenizer
的 javadoc:
StringTokenizer
is a legacy class that is retained for compatibility reasons although its use is discouraged in new code. It is recommended that anyone seeking this functionality use thesplit
method ofString
or the java.util.regex package instead.
"New code" 表示为 Java 1.4 或更高版本编写的任何内容,即远古时代。
while
循环将从分词器中提取所有值。当您在 已经提取了所有标记之后调用 nextToken()
时,为什么您对出现异常感到惊讶?
特别是 nextToken()
的 javadoc 中的这句话:
Throws
NoSuchElementException
if there are no more tokens in this tokenizer's string.
您可能是故意这样做的吗?
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