Я начинаю Java-проект, в котором пользователь заходит в зоомагазин и может либо дать питомца, посмотреть список всех питомцев, выбрать одного или выйти из магазина.Поскольку для ввода одной команды требуется несколько фрагментов информации, каждая команда, заданная пользователем, разделяется пробелами.Я думаю, что это создает массив строк, где каждое слово на входе является отдельным элементом.
import java.util.*;
public class Main {
static Scanner s = new Scanner(System.in);
public static void main(String[] args) {
while(true) {
System.out.println("Welcome to James' Pet Shop.");
System.out.println("Commands:\n give [type (Str)] [name (Str)] [age (in months, int)]\n list\n adopt [type (Str)] [name (Str)] [age (in months, int)]");
String input = s.next();
String[] inputs = input.split(" ");
if (inputs[0].equals("give")) {
} else if (inputs[0].equals("list")) {
} else if (inputs[0].equals("adopt")) {
} else if (inputs[0].equals("bye")) {
System.out.println("Thank you for stopping bye!");
break;
} else {
System.out.println("Error: please enter an appropriate command to continue");
}
}
}
public static void list() {
}
public static void adopt() {
}
}
Однако, когда я запускаю код и набираю более одного слова (разделенных пробелами), он может проверить, является ли элемент 0 определенной командой, и следовать этому условию (т. Е. Еслипервое слово - «дать», «список» и т. д., оно будет следовать по этому пути, а затем возвращаться к началу цикла и начинать сначала, пока пользователь не скажет «пока»), но, скажем, если вы должны были напечатать второе словоИндекс 1 в массиве, который вы ввели в качестве ввода, выдает мне ошибку: Исключение в потоке "main" java.lang.ArrayIndexOutOfBoundsException: 1 at Main.main (Main.java:30).Более странная вещь, которую я обнаружил, заключается в том, что если я обойду эту ошибку, печатая вместо первого индекса 0 слов снова, и я введу несколько слов, он будет обрабатывать каждый элемент ввода как элемент 0 и циклически повторять цикл столько раз, сколько есть.Заданные элементы / слова, набранные на входе.Я очень смущен ...
Отл.1
String input = s.next();
String[] inputs = input.split(" ");
if (inputs[0].equals("give")) {
//if you type give and another word
//instead of printing out the latter, it gives an error
System.out.println(input[1]);
} else if (inputs[0].equals("list")) {
Пример.2
String input = s.next();
String[] inputs = input.split(" ");
if (inputs[0].equals("give")) {
//instead of printing the first element and then taking more input
//if the first word is give, and
//overwriting the String array inputs, it instead prints out
//your first word, then cycles back through and treats the
//subsequent words as input 0.
//if you type "give giver", it will first print the beginning instructions,
//then print give because it satisfies that conditional,
//and then cycle back through the instructions and print
//Error: please enter an appropriate command to continue
System.out.println(input[0]);
} else if (inputs[0].equals("list")) {