不使用 NextLine 读取字符串中的空格作为输入

Read spaces in String as Input Without using NextLine

Discription:

我在下面的代码中使用了几个扫描仪语句。首先,我阅读了 "Adress",然后是 "Mobile No.",然后是用户的一些随机内容。

当我使用adress=sc.next()

它从用户(没有space)读取地址的字符串值并转到下一个扫描语句,即mobile=sc.nextBigInteger()。通过使用此方法,我无法读取 "adress(string) " 中的 spaces,它会抛出运行时错误作为 inputMismatchException。

现在如果我使用adress=sc.NextLine,程序会直接跳转到mobile=sc.nextBigInteger()

在上述情况和下面的代码中,如何读取 space 作为输入。我如何保护自己免受运行时错误的影响。我在论坛上收到了类似的问题,但没有一个令人满意。谢谢你。 (问我是否需要有关问题的更多信息)

Expected: input(In adress string) : pune maharashtra india

output(in display function) : pune mahrashtra india.

What exactly happened: if input(in adress string) : pune output(in display function) : pune

if input(in adress string) : Pune india
(Now As soon as i entered the string and hit the enter there I get a runtime error as an 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();
          }
        }

更改此行;

adress= sc.next();

用这条线;

adress = sc.nextLine();

这将解决您的问题。 scan.nextLine() returns 直到下一个新行 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();
    }
}