Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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_Java.util.scanner - Fatal编程技术网

Java 从控制台获取整数作为输入并将其存储在数组中

Java 从控制台获取整数作为输入并将其存储在数组中,java,arrays,java.util.scanner,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=

当我试图写下面的代码时,计算机会接受几个输入。但我想要的是,它应该只接受一行作为输入,并将该行中的所有整数保存在一个数组中。你能帮我做这个吗

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();
    }       
}
但我想要的是,它应该只接受一行作为输入,并将该行中的所有整数保存在一个数组中

首先,我敦促您不要关闭(一个围绕
系统在
中创建的
扫描仪。这是一个全局问题,
close()
ing会在以后给您带来各种问题(因为您无法重新打开它)。至于读取一行输入并将
int
值拆分为一个数组,您可以使用

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));
    }
}
如果您需要处理错误,我建议您使用类似的
列表

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));
List al=new ArrayList();
对于(int i=0;i
您可以将输入捕获为
字符串
,并使用
for
循环对其进行处理:

Scanner input=new Scanner(System.in);
int[] array=new int[20];
String numbers = input.nextLine();
for(int i = 0 ; i<numbers.length() ; i++){
    array[i]=Character.getNumericValue(numbers.charAt(i));
}  

扫描仪输入=新扫描仪(System.in);
ArrayList nums=新的ArrayList();
布尔重复=真;
while(重复){
系统输出
.print(“输入一组以空格分隔的整数,或输入'q'退出:”);
String line=input.nextLine();
如果(直线等于(“q”))
重复=错误;
否则{
字符串[]数字=行。拆分(\\s+);
for(字符串编号:数字){
如果(!nums.contains(num))
add(Integer.parseInt(num));
}
}
}
用于(整数i:nums){
系统输出打印LN(i);
}
input.close();

谢谢。但如果我的输入是这样的:121314151等等。在这种情况下,我将如何生成一个整数数组1、21、31、41等等?@PrabhjotRai啊,好问题!在这种情况下,您应该参考AnswerThank,但当我输入数字(如1314151等)时,这会打印一个错误。如何处理?根据您的评论进行编辑。什么是等?
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));
Scanner input=new Scanner(System.in);
int[] array=new int[20];
String numbers = input.nextLine();
for(int i = 0 ; i<numbers.length() ; i++){
    array[i]=Character.getNumericValue(numbers.charAt(i));
}  
int[] array=new int[numbers.length()];
    Scanner input = new Scanner(System.in);
    ArrayList<Integer> nums = new ArrayList<Integer>();

    boolean repeat = true;
    while (repeat) {
        System.out
                .print("Enter a bunch of integers seperated by spaces, or 'q' to quit: ");
        String line = input.nextLine();
        if (line.equals("q"))
            repeat = false;
        else {
            String[] numbers = line.split("\\s+");
            for (String num : numbers) {
                if (!nums.contains(num))
                    nums.add(Integer.parseInt(num));
            }
        }
    }
    for (Integer i : nums) {
        System.out.println(i);
    }
    input.close();