java - 将整数作为控制台的输入并将它们存储在数组中

标签 java arrays java.util.scanner

当我尝试编写以下代码时,计算机需要多个输入。但我想要的是它应该只接受一行作为输入并将该行中的所有整数保存在一个数组中。你能帮我解决这个问题吗?

import java.util.*;

class InputInteger{

    public static void main(String args[]){
        Scanner input=new Scanner(System.in);
        int[] array=new int[20];
        int i=0;
        while(input.hasNext()){
          array[i]=input.nextInt();
          i++;
        }     
        input.close();
    }       
}

最佳答案

But what I want is it should take only one line as an input and save all the integers in that line in an array.

首先,我强烈建议您不要close() 您围绕System.in 创建的Scanner。这是全局的,close()ing 可能会在以后导致您出现各种问题(因为您无法重新打开它)。至于读取单行输入并将 int 值拆分为数组,您可以使用 Scanner.nextLine()和类似的东西

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    if (input.hasNextLine()) {
        String line = input.nextLine();
        String[] arr = line.split("\\s+");
        int[] vals = new int[arr.length];
        for (int i = 0; i < arr.length; i++) {
            vals[i] = Integer.parseInt(arr[i]);
        }
        System.out.println(Arrays.toString(vals));
    }
}

编辑 根据您的评论,

String line = "1 31 41 51";
String[] arr = line.split("\\s+");
int[] vals = new int[arr.length];
for (int i = 0; i < arr.length; i++) {
    vals[i] = Integer.parseInt(arr[i]);
}
System.out.println(Arrays.toString(vals));

输出是

[1, 31, 41, 51]

如果你需要处理错误,我建议你使用List这样的

List<Integer> al = new ArrayList<>();
for (int i = 0; i < arr.length; i++) {
    try {
        al.add(Integer.parseInt(arr[i]));
    } catch (NumberFormatException nfe) {
    }
}
// You could now print the List
System.out.println(al);
// And if you must have an `int[]` copy it like.
int[] vals = new int[al.size()];
for (int i = 0; i < al.size(); i++) {
    vals[i] = al.get(i);
}
System.out.println(Arrays.toString(vals));

关于java - 将整数作为控制台的输入并将它们存储在数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27241097/

相关文章:

arrays - 在 for 循环中修改数组时的奇怪行为

java - 在java(android)中使用扫描仪有什么意义

从 Web 浏览器使用 php exec 执行用于签署 pdf 文件的 Java 程序失败

java - 如何动态地将arraylist放入Hashmap中?

java - 如何创建一个 JUnit 测试,该测试在满足特定条件之前一直运行?

java - init 方法调用失败;添加 Hibernate envers 后嵌套异常是 java.lang.NoSuchMethodError

c# - 如何最有效地测试两个数组是否包含 C# 中的等效项

用于获取对象值的有序数组的 Javascript (lodash) 函数

java - 扫描 nextLine,卡在 while 循环中或在奇怪的时间退出

java - 为什么使用 ant 运行 java 时无法获取用户输入?