1

嗨,我是 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,以便所有三位数字都存储在数组中。有人可以帮帮我吗。我想我应该使用分隔符来删除空格,但我不知道该怎么做。

4

6 回答 6

2

您可以尝试这样的事情,而不是while填充数组的 2 个循环。

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

String line1 = scan.nextLine(); // Read 1st line
String[] numbers1 = line1.split(" "); // Split based on space
for(int i=0;i<numbers1.length;i++){
    array[i] = Integer.parseInt(numbers1[i]);
}

String line2 = scan.nextLine(); // Read 2nd line
String[] numbers2 = line2.split(" "); // Split based on space
for(int i=0;i<numbers2.length;i++){
    array2[i] = Integer.parseInt(numbers2[i]);
}

示例 I/O:-

Input:
1 2 3
4 5 6

Output:
1
2
3
4
5
6
于 2013-09-19T07:26:25.120 回答
1

为此,您必须将字符串作为一个孔4 5 6并使用split(" ")来获取一个数组:

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

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

于 2013-09-19T07:28:48.353 回答
1
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]);
于 2015-01-03T09:47:11.387 回答
0

这是你想要的?

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"));
        }
    }

}
于 2013-09-19T07:30:38.623 回答
0

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

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

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

        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] + " ");
        }
于 2013-09-19T07:33:24.120 回答
0
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<arr.length;i++)
        {
            a[i]=Integer.parseInt(arr[i]);
        }
        for(int i=0;i<a.length;i++)
        {
            System.out.println(a[i]);
        }
    }
}

你可以试试这个,并可以做出相应的改变。

于 2015-08-10T16:53:12.590 回答