как взять ввод данных пользователем в Массиве с помощью Java? т.е. мы не инициализируем его нами в нашей программе, но пользователь собирается дать ее значение.. ведите!!
Вот простой код, который считывает строки из 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));
}
}
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;
}
}
}
Это сильно зависит от того, как вы собираетесь принимать этот ввод, т.е. как ваша программа собирается взаимодействовать с пользователем.
Самый простой пример - если вы собираетесь создать исполняемый файл - в этом случае пользователь может просто указать элементы массива в командной строке, и соответствующий массив будет доступен из метода main
вашего приложения.
В качестве альтернативы, если вы пишете веб-приложение, вы захотите принимать значения в методах doGet
/doPost
вашего приложения, либо вручную разбирая параметры запроса, либо предоставляя пользователю HTML-форму, которая отправляется на вашу страницу разбора.
Если это Swing-приложение, то вы, вероятно, захотите вывести на экран текстовое поле, чтобы пользователь мог ввести данные. А в других контекстах вы можете считывать значения из базы данных/файла, куда они уже были введены пользователем.
В принципе, чтение ввода в виде массивов довольно просто, как только вы придумали способ получить ввод. Вам нужно подумать о контексте, в котором будет работать ваше приложение, и о том, как ваши пользователи, скорее всего, будут взаимодействовать с этим типом приложений, а затем принять решение об архитектуре ввода-вывода, которая имеет смысл.