Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.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 从空格分隔的整数列表创建数组_Java_Arrays_List_Integer - Fatal编程技术网

Java 从空格分隔的整数列表创建数组

Java 从空格分隔的整数列表创建数组,java,arrays,list,integer,Java,Arrays,List,Integer,我正在尝试制作一个java程序,它可以接受一个数字列表,每个数字之间用一个空格隔开(例如:12355693124124等等),然后将这些数字放入一个数组并检查重复的数字。除了这个给我带来麻烦的方法外,整个过程都很顺利: public static List returnArray(){ System.out.println("type numbers here: "); while(sc.hasNextInt()){ list.add(sc.nextInt());

我正在尝试制作一个java程序,它可以接受一个数字列表,每个数字之间用一个空格隔开(例如:12355693124124等等),然后将这些数字放入一个数组并检查重复的数字。除了这个给我带来麻烦的方法外,整个过程都很顺利:

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]外,什么都做不了。您知道如何编写此代码,以便它知道在多个空格后停止输入,并且在结尾不需要其他字符吗?

您可以先使用
scan.readLine()
扫描整行(仅一行),然后解析该字符串

基本上,读取一行(作为字符串),并使用空格(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;
}

您可以使用比扫描仪更快的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()));
}

我想你是说sc是扫描仪?似乎
list
是您的arraylist。新代码中不鼓励使用
StringTokenizer
。它的存在只是为了支持遗留代码。它告诉我不能使用默认的bufferedreaderconstructor@AdamP哦,我明白了,但我总是被告知这是更快的方法,因为有一次我参加了一个比赛,比赛需要回答0.1毫秒以下的程序,而使用java,你只能通过使用StringTokenizer来获得分数。@MikeHawk请确保你用以下内容定义BufferedReader:new BufferedReader(new InputStreamReader(System.in))@AdamP无论我做什么,我都会遇到这样一个错误,阻止程序运行:未处理的异常类型IOException我忘了指定它必须能够从多行读取您希望它做什么?输入1行,返回一个数组,然后输入另一个?或者在开始时输入它们,然后返回一个大数组?或者在开始时输入它们并返回一组小数组?