Чтение пробелов в строке как ввод без использования NextLine - PullRequest
0 голосов
/ 06 сентября 2018

Discription:

Я использовал несколько характеристик сканера в приведенном ниже коде. Сначала я читаю «Адрес», а затем «Мобильный №». а затем некоторые случайные вещи от пользователя.

Когда я использую adress=sc.next()

считывает строковое значение адреса от пользователя (без пробела) и переходит к оператору следующего сканирования, т.е. mobile=sc.nextBigInteger(). с помощью этого метода я не могу прочитать пробелы в «адрес (строка)», и он выдает ошибку времени выполнения в качестве inputMismatchException.

Теперь, если я использую adress=sc.NextLine, программа напрямую переходит к mobile=sc.nextBigInteger().

Как можно прочитать пробелы как ввод в вышеприведенных ситуациях и в приведенном ниже коде. Как я могу защитить себя от ошибок во время выполнения. Я получил похожие вопросы на форуме, но ни один из них не был удовлетворительным. Спасибо. (Спросите меня, если вам нужна дополнительная информация о вопросе)

Ожидаемая: ввод (в адресной строке): махараштра пуна индия

вывод (в функции дисплея): махраштра Пуна Индия.

Что именно произошло: если ввод (в адресной строке): вывод pune (в функции отображения): pune

если вводится (в строке адреса): Pune India
(Теперь, как только я ввел строку и нажал там, я получил ошибку времени выполнения как inputmismatchexception)

> JAVA

    public class Data {
           Scanner sc = new Scanner(System.in);

          String adress;
          BigInteger AcNo;
          BigInteger mobile;
          String ifsc;

        void getData() {                                                                 

          System.out.println("Welcome to  Bank System");

          System.out.println("Please Enter the adress :");
           adress= sc.next();

           System.out.println("Enter the Mobile Number");
             mobile = sc.nextBigInteger();

           System.out.println("Enter the Account Number");
           AcNo = sc.nextBigInteger();

           System.out.println("Enter the IFSC Code");
           ifsc= sc.next();
        }

           public static void main(String[] args) {
               Data d=new Data();
                 d.getData();
          }
        }

1 Ответ

0 голосов
/ 07 сентября 2018

Изменить эту строку;

adress= sc.next();

с этой строкой;

adress = sc.nextLine();

это решит вашу проблему. scan.nextLine() возвращает все до следующей новой строки delimiter или \n, но scan.next() - нет.

Так что весь код будет таким;

public class Data{

    String adress;
    BigInteger AcNo;
    BigInteger mobile;
    String ifsc;

    void getData() {

        System.out.println("Welcome to  Bank System");

        System.out.println("Please Enter the adress :");
        adress = new Scanner(System.in).nextLine();

        System.out.println("Enter the Mobile Number");
        mobile = new Scanner(System.in).nextBigInteger();

        System.out.println("Enter the Account Number");
        AcNo = new Scanner(System.in).nextBigInteger();

        System.out.println("Enter the IFSC Code");
        ifsc = new Scanner(System.in).next();
    }

    public static void main(String[] args) {
        Data d = new Data();
        d.getData();
    }
}
...