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();