我是Java的初学者,我刚刚写了一个程序来获取用户的姓名,电话号码和地址。问题是在读完电话号码后,程序不会继续读取地址,就好像它正在跳过它一样。这是我的代码:
public static void main(String [] arge){
Scanner sc = new Scanner(System.in);
System.out.println("Enter your name, phone number and address");
String name = sc.nextLine();
long phone = sc.nextLong();
String address = sc.nextLine();
System.out.println("\n *** Here is your info ***");
System.out.println("Name: "+name+"\nPhone number: "+phone+"\n Address: "+address);
}
答案 0 :(得分:3)
long phone = sc.nextLong();
将此更改为
long phone = Long.parseLong(sc.nextLine());
因为在给出电话号码后,您点击的输入将被设置为nextLine
address
。因此,空白地址(在某种意义上,程序不会提示您输入地址)。
使代码工作的另一种方法(不更改任何内容,YES,不做任何更改!)是在输入的同一行提供您的电话号码和地址。扫描仪将空间作为默认分隔符并为您完成工作。这是因为nextLong()
只扫描长值。
答案 1 :(得分:0)
您的程序将读取所有三个输入。但我相信你在输入电话号码后按了输入键。尝试按照此处提到的输入:
MYNAME
100000 myAddress
sc.nextLong()方法将接受long值,然后sc.nextLine()将等待同一行的输入。如果在输入long值后按Enter键,sc.nextLine()将只读为空。
答案 2 :(得分:0)
试试这个:
String name = sc.nextLine();
long phone = Long.parseLong(sc.nextLine());
String address = sc.nextLine();
答案 3 :(得分:0)
尝试逐个读取值
Scanner sc = new Scanner(System.in);
System.out.println("Enter your name");
String name = sc.nextLine();
System.out.println("Enter your phone number");
long phone = sc.nextLong();
sc.nextLine();//to catch the buffer"ENTER KEY" value
System.out.println("Enter your address");
String address = sc.nextLine();
System.out.println("\n *** Here is your info ***");
System.out.println("Name: "+name+"\nPhone number: "+phone+"\n Address: "+address);
答案 4 :(得分:0)
试试这个。
import java.util.Scanner;
class ScannerTest{
public static void main(String args[]){
Scanner sc=new Scanner(System.in);
System.out.println("Enter your rollno");
int rollno=sc.nextInt();
System.out.println("Enter your name");
String name=sc.next();
System.out.println("Enter your fee");
double fee=sc.nextDouble();
System.out.println("Rollno:"+rollno+" name:"+name+" fee:"+fee);
}
}