Мой первый вопрос: как массив размером 3 (userInputSplitFirstLine) и массив размера 2 (userInputSplitSecondLine) могут содержать более 3 и 2 элементов соответственно?
массив здесь:
String[] userInputSplitFirstLine = new String[3];
не совпадает с тем, который вы получили от split
:
userInputSplitFirstLine = userInput.split("\\s+");
Когда вы выполняете указанное выше назначение, старый массив, который был тамв основном «перезаписан», и теперь userInputSplitFirstLine
относится к этому новому массиву, длина которого не зависит от того, что имел старый массив.split
всегда возвращать новый массив.
Мой второй вопрос заключается в том, как я могу ограничить / ограничить количество слов, которые пользователь может вставить в строку;Например, первая строка принимает только 3 слова, а вторая - только 2 слова?
Это действительно зависит от того, что вы подразумеваете под «ограничить».Если вы просто хотите проверить, есть ли ровно три слова, и если нет, выйдите из программы, вы можете сделать это:
userInputSplitFirstLine = userInput.split("\\s+");
if (userInputSplitFirstLine.length != 3) {
System.out.println("Please enter exactly 3 words!");
return;
}
Вы можете сделать что-то похожее со второй строкой.
Если вы хотите, чтобы пользователь не мог вводить более 3 слов, то это невозможно, поскольку это приложение командной строки.
Кстати, код в предлагаемом решении работает, потому что next()
возвращаетследующее слово (или то, что мы обычно называем словом), по умолчанию.