как взять ввод данных пользователем в Массиве с помощью Java?

как взять ввод данных пользователем в Массиве с помощью Java? т.е. мы не инициализируем его нами в нашей программе, но пользователь собирается дать ее значение.. ведите!!

6
задан skaffman 15 May 2011 в 12:47
поделиться

3 ответа

Вот простой код, который считывает строки из stdin , добавляет их в List , а затем использует toArray для преобразования его в String [] (если вам действительно нужно работать с массивами).

import java.util.*;

public class UserInput {
    public static void main(String[] args) {
        List<String> list = new ArrayList<String>();
        Scanner stdin = new Scanner(System.in);

        do {
            System.out.println("Current list is " + list);
            System.out.println("Add more? (y/n)");
            if (stdin.next().startsWith("y")) {
                System.out.println("Enter : ");
                list.add(stdin.next());
            } else {
                break;
            }
        } while (true);
        stdin.close();
        System.out.println("List is " + list);
        String[] arr = list.toArray(new String[0]);
        System.out.println("Array is " + Arrays.toString(arr));
    }
}

См. Также:

7
ответ дан 8 December 2019 в 17:19
поделиться

import java.util.Scanner;

class Example {

// Проверяет, считается ли строка целым числом.

public static boolean isInteger(String s){

    if(s.isEmpty())return false;

    for (int i = 0; i <s.length();++i){

        char c = s.charAt(i);

        if(!Character.isDigit(c) && c !='-')

            return false;
    }

    return true;
}

//Get integer. Prints out a prompt and checks if the input is an integer, if not it will keep asking.

public static int getInteger(String prompt){
    Scanner input = new Scanner(System.in);
    String in = "";
    System.out.println(prompt);
    in = input.nextLine();
    while(!isInteger(in)){
        System.out.println(prompt);
        in = input.nextLine();
    }
    input.close();
    return Integer.parseInt(in);
}

public static void main(String[] args){
    int [] a = new int[6];
    for (int i = 0; i < a.length;++i){
        int tmp = getInteger("Enter integer for array_"+i+": ");//Force to read an int using the methods above.
        a[i] = tmp;
    }

}

}

-1
ответ дан 8 December 2019 в 17:19
поделиться

Это сильно зависит от того, как вы собираетесь принимать этот ввод, т.е. как ваша программа собирается взаимодействовать с пользователем.

Самый простой пример - если вы собираетесь создать исполняемый файл - в этом случае пользователь может просто указать элементы массива в командной строке, и соответствующий массив будет доступен из метода main вашего приложения.

В качестве альтернативы, если вы пишете веб-приложение, вы захотите принимать значения в методах doGet/doPost вашего приложения, либо вручную разбирая параметры запроса, либо предоставляя пользователю HTML-форму, которая отправляется на вашу страницу разбора.

Если это Swing-приложение, то вы, вероятно, захотите вывести на экран текстовое поле, чтобы пользователь мог ввести данные. А в других контекстах вы можете считывать значения из базы данных/файла, куда они уже были введены пользователем.

В принципе, чтение ввода в виде массивов довольно просто, как только вы придумали способ получить ввод. Вам нужно подумать о контексте, в котором будет работать ваше приложение, и о том, как ваши пользователи, скорее всего, будут взаимодействовать с этим типом приложений, а затем принять решение об архитектуре ввода-вывода, которая имеет смысл.

0
ответ дан 8 December 2019 в 17:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: