如何使用Java中的Scanner将输入值存储在数组中

嗨,我是Java新手,我正在尝试使用Scanner类。 我试图找出一个小问题,我想输入两个输入,如:4 5 6和8 9 0.我想在一个数组中存储4,5,6,在另一个数组中存储8,9,0然后打印这些数组。 但我无法这样做。 我写了以下代码:

public class scanner { public static void main(String[] args) { int[] array = new int[3]; int[] array2 = new int[3]; Scanner scan = new Scanner(System.in); int i = 0; while(scan.hasNextInt()){ array[i] = scan.nextInt(); i++; if(i == 3){ break; } } i = 0; while(scan.hasNextInt()){ array2[i] = scan.nextInt(); i++; if(i == 3){ break; } } for(int j = 0; j < array.length; j++){ System.out.println(array[j]); } for(int j = 0; j < array2.length; j++){ System.out.println(array2[j]); } } } 

但这并不是在一行中输入4 5 6。 我想在一行中输入4 5 6,以便所有三个数字都存储在数组中。 有人可以帮帮我吗。 我假设我应该使用分隔符来删除空格,但我不知道如何去做。

你可以试试这样的东西,而不是你要填充arrays的2个循环。

扫描仪在这里逐行读取,每行在空间上分割(如您在问题中所提到的),然后将每个分割元素转换为整数并填充数组。

 String line1 = scan.nextLine(); // Read 1st line String[] numbers1 = line1.split(" "); // Split based on space for(int i=0;i 

样本I / O: -

 Input: 1 2 3 4 5 6 Output: 1 2 3 4 5 6 

要做到这一点,你必须将String作为一个洞4 5 6并使用split(“”)来获得一个数组:

 String val="4 5 6"; String [] arr = val.split(" "); 

然后像现在一样继续循环你的arry

这是你想要的?

 public class InputScanner { public static void main(String[] args) { int[] array = new int[3]; int[] array2 = new int[3]; Scanner scan = new Scanner(System.in); int i = 0; while (scan.hasNextInt()) { array[i] = scan.nextInt(); i++; if (i == 3) { break; } } i = 0; while (scan.hasNextInt()) { array2[i] = scan.nextInt(); i++; if (i == 3) { break; } } for (int j = 0; j < array.length; j++) { System.out.print("" + array[j] + (j<(array.length-1)?" ":"\n")); } for (int j = 0; j < array2.length; j++) { System.out.print("" + array2[j] + (j<(array2.length-1)?" ":"\n")); } } } 

你的代码没问题。 根据javadoc,Scanner的默认分隔符是空格。

输入由分隔符模式分解为标记,默认情况下为空格

可能让您感到困惑的是,print将每个整数放在一个新行中。 要解决这个问题,你可以简单地写一下:

  for(int j = 0; j < array.length; j++){ System.out.print(array[j] + " "); } System.out.println(); for(int j = 0; j < array2.length; j++){ System.out.print(array2[j] + " "); } 
 int[] array = new int[3]; int[] array2 = new int[3]; Scanner scan = new Scanner(System.in); for(int i = 0 ; i < array.length ; i++){ array[i] = scan.nextInt(); } for(int i = 0 ; i < array2.length ; i++){ array2[i] = scan.nextInt(); } for(int j = 0; j < array.length; j++){ System.out.println(array[j]); } for(int j = 0; j < array2.length; j++){ System.out.println(array2[j]); 
 import java.util.*; class Ab { public static void main(String[] args) { Scanner s=new Scanner(System.in); String str=s.nextLine(); String [] arr=str.split(" "); Integer [] a=new Integer[arr.length]; for(int i=0;i 

您可以尝试这样做,并可以相应地进行更改。