Java: как иметь два или более ввода в одной строке консоли

Я новичок в java, и я написал программу базового ввода / вывода, и в этой программе я хочу, чтобы пользователь предоставил 3 разных ввода и сохранил их в 3 разных переменных, это два int и один char.

public static void ForTesting() {
    Scanner newScanTest = new Scanner(System.in);
    ٍٍٍٍٍٍٍٍٍٍٍSystem.out.print("Please type two numbers: ");
    int numberOne = newScanTest.nextInt();
    int numberTwo = newScanTest.nextInt();
    System.out.println("First Nr.: " + numberOne + " Second Nr.: " + numberTwo);
}

В консоле

Что я получаю:

Введите два числа: 4

5

Первый номер: 4 Второй номер: 5


Что я хочу:

Введите два числа: 4 5.

Первый номер: 4 Второй номер: 5

(Полужирные числа - вводимые пользователем)


person Mk Berou    schedule 31.07.2019    source источник
comment
Если я правильно понимаю, код уже должен работать? Только не enter после ввода числа, а введите два числа, разделенных пробелом, а затем enter. Или вы хотите заставить пользователя вводить только одну строку?   -  person TiiJ7    schedule 31.07.2019
comment
Я думаю, это сработало, поэтому пользователю не нужно нажимать ввод, чтобы показать, что он ввел первый ввод?   -  person Mk Berou    schedule 31.07.2019
comment
Это сработало, спасибо.   -  person Mk Berou    schedule 31.07.2019


Ответы (3)


nextLine(), как следует из названия, читает одну строку. Если оба числа содержатся в этой единственной строке, вы должны прочитать оба целых числа из этой строки. Например:

Scanner scanner = new Scanner(System.in);
String line = scanner.nextLine();  // reads the single input line from the console
String[] strings = line.split(" ");  // splits the string wherever a space character is encountered, returns the result as a String[]
int first = Integer.parseInt(strings[0]);
int second = Integer.parseInt(strings[1]);
System.out.println("First number = " + first + ", second number = " + second + ".");

Обратите внимание, что это не удастся, если вы не укажете 2 целых числа во входных данных.

person cameron1024    schedule 31.07.2019
comment
Спасибо за уделенное время. Будет ли это также работать, если мне также нужен символ посередине, например, пользовательский ввод 2 + 2, и все три ввода в одной строке. Я попробую твой путь и вернусь к тебе. Благодарность - person Mk Berou; 31.07.2019
comment
Если вы точно знаете, какие символы будут между двумя числами, вы передаете их в качестве аргумента в line.split(). Если вход 2 + 2, тогда функция должна быть line.split(" + ");. Пространства по обе стороны важны. - person cameron1024; 31.07.2019
comment
@ cameron1024 Какую версию Java вы используете? Есть ли у класса Scanner метод readLine ()? - person psi; 31.07.2019
comment
Нет, я не знаю, что это будет за символ, пользователю нужно ввести три вещи - ›сначала int, затем char, а затем второй int -› firstInt (3), затем char (+ или - или * или /) затем secondInt (4) - person Mk Berou; 31.07.2019
comment
Моя ошибка, это nextLine() не readLine(), плохо отредактирую свой ответ - person cameron1024; 31.07.2019
comment
@psi Я новичок в Java и действительно не знаю. - person Mk Berou; 31.07.2019
comment
@MK Berou Я думаю, вы можете попробовать подход, предложенный cameron1024, но я подозреваю, что даже nextLine () не будет работать. - person psi; 31.07.2019
comment
@MK Berou Я опубликовал свой ответ ниже ... вы можете взглянуть на него как на альтернативное решение. - person psi; 31.07.2019

Пожалуйста, попробуйте приведенный ниже код, я пытаюсь преобразовать целые числа в строки.

public static void ForTesting() {
    Scanner newScanTest = new Scanner(System.in);
    ٍٍٍٍٍٍٍٍٍٍٍSystem.out.print("Please type two numbers: ");
    int number = newScanTest.nextInt();
    int firstDigit = Integer.parseInt(Integer.toString(number).substring(0, 1));
    int secondDigit = Integer.parseInt(Integer.toString(number).substring(1, 2));
    System.out.println("First Nr.: " + firstDigit + " Second Nr.: " + secondDigit);
}
person frianH    schedule 31.07.2019
comment
Хорошо, попробую и вернусь к вам. Спасибо. - person Mk Berou; 31.07.2019

Если вы очень уверены в вводе, например (2 + 2) или (2-2) или (2 * 2) или (2/2) ниже, должны работать -

Scanner scanner = new Scanner(System.in);
Integer first = scanner.nextInt();
String operator = scanner.next();
Integer second = scanner.nextInt();
System.out.println("First number = " + first + ", second number = " + second + ".");
person psi    schedule 31.07.2019