Ema*_*lka 1 java arraylist stringtokenizer
我想把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);
}
}
Run Code Online (Sandbox Code Playgroud)
引用javadoc StringTokenizer:
StringTokenizer是一个遗留类,出于兼容性原因而保留,尽管在新代码中不鼓励使用它.建议任何寻求此功能的人都使用java或java.util.regex包的split方法String.
"新代码"是指为Java 1.4或更高版本编写的任何内容,即远古时代.
该while循环将从标记生成器提取所有的值.当你nextToken() 在已经提取了所有令牌之后再打电话时,为什么你会得到一个例外而感到惊讶?
特别是从javadoc的引用nextToken():
NoSuchElementException如果此tokenizer的字符串中没有其他标记,则抛出此异常.
你是否意味着这样做?
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7224 次 |
| 最近记录: |