不使用 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();
}
}
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();
}
}