我正在尝试创建一个java程序,它可以接受一个数字列表,每个数字由空格分隔(例如:1 2 3 5 69 3124124等...),然后将这些数字放入一个数组并检查重复项。除了这个给我带来麻烦的方法之外,整个过程都很好:
public static List returnArray(){
System.out.println("type numbers here: ");
while(sc.hasNextInt()){
list.add(sc.nextInt());
}
return list;
" SC"是arraylist
它工作得很好,除了程序理解它的唯一方法是完成输入输入是为了我在末尾添加一个字母或者其他东西,所以1 2 3的输入不起作用除了输入1 2 3 r之外的任何内容都会产生[1 2 3]。任何想法如何写这样,以便它知道在多个空格后停止输入并且最后不需要其他字符?
答案 0 :(得分:0)
您可以先使用scan.readLine()
扫描整行(仅限一行),然后解析THAT字符串。
基本上,读取一行(作为字符串),并使用空格(split(“”)函数)将其拆分,然后对于每一个,将其解析为整数并将其添加到arraylist列表中。最后返回清单。
eg:
public static List returnArray() {
System.out.println("Type numbers here: ");
String input = sc.readLine();
String[] x = input.split(" ");
for (String y : x) {
Int tempInt = Integer.parseInt(y);
list.add(tempInt);
}
return list;
}
答案 1 :(得分:-1)
您可以使用比Scanner更快的BufferedReader。 它就像这样
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer tokenizer = new StringTokenizer(reader.readLine()); //throws IOException
while(tokenizer.hasMoreTokens()) {
list.add(Integer.valueOf(tokenizer.nextToken()));
}