.nextLine () не принимает последующие входы String

У меня есть программа, которая запрашивает у пользователя ввод чисел и символов. Для этого я использую Scannerкласс. Но когда я беру два последующих строковых ввода, консоль просто перемещается и просит пользователя ввести вторую строку. Пользователь не может ввести первую строку. Я приложил свой код ниже, чтобы быть более конкретным.

import java.util.Scanner;

class XYZ {

    public static void main(String args[]) {
        int x, y, z, b, c;
        String p, q;
        Scanner sc = new Scanner(System.in);

        System.out.println("Enter a number");
        b = sc.nextInt();

        System.out.println("Enter a new number");
        c = sc.nextInt();

        System.out.println("Enter a String");
        p = sc.nextLine();

        System.out.println("Enter a new String");
        q = sc.nextLine();

        System.out.println("Enter a number");
        x = sc.nextInt();

        System.out.println("Enter 2nd number");
        y = sc.nextInt();

        System.out.println("Enter 3rd number");
        z = sc.nextInt();

        ABC a = new ABC();

        a.PQR(b, c);
        a.PQR(p, q);
        a.PQR(x, y, z);
    }
}

class ABC {

    void PQR(int a, int b) {
        int res = a + b;
        System.out.println("The sum is" + " " + res);
    }

    void PQR(String a, String b) {
        System.out.println("Thye concataneted string is" + a + " " + b);
    }

    void PQR(int a, int b, int c) {
        int res = a * b * c;
        System.out.println("The product is" + " " + res);
    }
}

java,

0

Ответов: 4


2 принят

Вам нужно сделать фиктивный вызов nextLine()после вашего звонка nextInt(). Он nextInt()не учитывает « n».

В качестве альтернативы и предпочтительно просто использовать nextLine()для приема всех входных данных и в зависимости от того, какие из них должны быть ints, просто используйте:

int i = Integer.parseInt(**string**);

Помогает ли это?


2

Дело в том, что метод Scanner # nextInt не использует последний символ новой строки вашего ввода, и, таким образом, эта новость потребляется при следующем вызове Scanner # nextLine.

ссылка

ИЛИ

Если вы используете метод nextLine () сразу после метода nextInt (), напомните, что nextInt () читает токены целых чисел, из-за этого последний символ новой строки для этой строки целочисленного ввода по-прежнему помещается в очередь во входном буфере, а следующий nextLine () будет читать остаток целой строки (пустой). - hackerrank.com

Обновление: после c = sc.nextInt(); того, как вам нужно поставить еще одно заявление, т.е.

sc.nextLine();

НТН!


1
import java.util.Scanner;

public class Solution {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int i = sc.nextInt();
        sc.nextLine();
        double d = sc.nextDouble();
        sc.nextLine();
        String s = sc.nextLine();

        System.out.println("String: " + s);
        System.out.println("Double: " + d);
        System.out.println("Int: " + i);
    }
}

Чтобы взять три строки ввода: int, double и String


1

import java.util.Scanner;

public class Solution {

public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    int i = scan.nextInt();
    double d = scan.nextDouble();
    scan.nextLine();
    String s = scan.nextLine();

    // Write your code here.

    System.out.println("String: " + s);
    System.out.println("Double: " + d);
    System.out.println("Int: " + i);
}

}

Ява,
Похожие вопросы