简体   繁体   English

使用扫描仪将数据输入数组

[英]using scanner to input data into an array

Hi I am a beginner and today I started learning about arrays. 嗨,我是一个初学者,今天我开始学习数组。 I wrote the following working program. 我编写了以下工作程序。

import java.util.Scanner;

    public class Arr {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            System.out.println("enter some numbers");
            int[] x = new int[5];
            x[0] = scanner.nextInt();
            x[1] = scanner.nextInt();
            x[2] = scanner.nextInt();
            x[3] = scanner.nextInt();
            x[4] = scanner.nextInt();
            String string = "the numbers as requested are : ";
            for(int i = 0; i < x.length; i++) {
                System.out.println(string + x[i]);
            }
            scanner.close();
        }
    }

however if my array had 1000 numbers, this process would have become tiresome. 但是,如果我的数组有1000个数字,则此过程将变得很麻烦。 Is there an easy way to input numbers without typing input scanner for each package 有没有一种简单的方法可以输入数字而无需input scanner for each package键入input scanner for each package

Don't just hardcode. 不只是硬编码。 Use a while loop and with your limit. 使用while循环并使用您的限制。

public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("enter some numbers");
        int[] x = new int[5];
        int j = 0;
        while (scanner.hasNext() && j < limit) { 
            if (scanner.hasNextInt()) {
                x[j] = scanner.nextInt();
                j++;
            }

        }

        String string = "the numbers as requested are : ";
        for (int i = 0; i < x.length; i++) {
            System.out.println(string + x[i]);

        }
        scanner.close();

    }

Where limit is 4 for 5 inputs, limit is 99 for 100 input's . 其中5输入的限制为4 99100输入的限制为99 100

however if my array had 1000 numbers, this process would have become tiresome. 但是,如果我的数组有1000个数字,则此过程将变得很麻烦。 Is there an easy way to input numbers without typing input scanner for each package 有没有一种简单的方法可以输入数字而无需为每个包裹键入输入扫描仪

Yes, by using loops. 是的,通过使用循环。 Use a for-loop or a while loop . 使用for循环while循环

int[] array = new int[5];
for(int x=0; x<array.length; x++) //Prompt as many times as the array size
    array[x] = scanner.nextInt();

Generally, use a for-loop when you are certain how many times it will iterate, and a while loop when you are not certain how many times the loop would run. 通常,在确定要迭代多少次时使用for循环, 在不确定要运行多少次时使用while循环。

Expanding on the idea of not having hard-coded limits mentioned by @Suresh-Atta I'd look at making use of an ArrayList , see Why is it preferred to use Lists instead of Arrays in Java , to store a dynamic number of items. 扩展没有@ Suresh-Atta提到的硬编码限制的想法,我来看看利用ArrayList ,请参阅为什么在Java中最好使用List而不是Array来存储动态数量的项目。 Doing so means you need some indicator to exit the reading on the input, in this case the word "exit" 这样做意味着您需要一些指示器来退出输入的读数,在这种情况下,单词“ exit”

import java.util.Scanner;
import java.util.ArrayList;

public class Arr {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("enter some numbers");
        ArrayList<Integer> numbers = new ArrayList<Integer>();

        while (scanner.hasNext()) {        
            if (scanner.hasNextInt()) {
                numbers.add(scanner.nextInt());
            } else {
                String s1 = scanner.next();
                if ("exit".equalsIgnoreCase(s1)) {
                     break;
                }
            }
        }

        String string = "the numbers as requested are : ";
        for (Integer x : numbers) {
            System.out.println(x);
        }
        scanner.close();

     }
 }

Here's a sample: 这是一个示例:

public static void main(String[] args) {
    int ARRAY_LENGTH = 5;
    int[] intArray = new int[ARRAY_LENGTH];
    int x = 0;

    try (Scanner reader = new Scanner(System.in)) {
        System.out.println("Enter " + ARRAY_LENGTH + " numbers [Something else exits]: ");
        while (x < ARRAY_LENGTH) {
            if (reader.hasNextInt()) {
                intArray[x++] = reader.nextInt();
            } else {
                System.out.println("Input not a number, exiting.");
                break;
            }
        }
    }

    //Print array
    System.out.print("Array has: ");
    for (int number : intArray) {
        System.out.print(number + " ");
    }
    System.out.println();
}

Here's another: 这是另一个:

public static void main(String[] args) {
    ArrayList<Integer> array = new ArrayList();
    try (Scanner reader = new Scanner(System.in)) {
        System.out.println("Enter numbers [Something else exits]: ");
        while (reader.hasNextInt()) {
            array.add(reader.nextInt());
        }
    }

    //Print array
    System.out.print("Array has: ");
    for (int number : array) {
        System.out.print(number + " ");
    }
    System.out.println();
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM