1

我是 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);
}
4

5 回答 5

3
long phone = sc.nextLong();

将其更改为

long phone = Long.parseLong(sc.nextLine());

因为在提供电话号码后,您输入的输入被消耗为nextLine设置为您的address. 因此,空白地址(从某种意义上说,程序不会提示您输入地址)。

使您的代码工作的另一种方法(无需更改任何内容,是的,无需任何更改!)是在输入的同一行中提供您的电话号码和地址。扫描仪会将空格作为默认分隔符并为您完成工作。这是因为nextLong()只会扫描长值。

于 2013-10-02T07:33:21.700 回答
0

您的程序将读取所有三个输入。但我相信您在输入电话号码后会按 Enter 键。尝试按照此处所述进行输入:

我的名字

100000 我的地址

sc.nextLong() 方法将接受 long 值,然后 sc.nextLine() 将等待同一行的输入。如果在输入 long 值后按 enter,sc.nextLine() 将简单地读取为空。

于 2013-10-02T07:32:08.040 回答
0

尝试这个:

    String name = sc.nextLine();
    long phone = Long.parseLong(sc.nextLine());
    String address = sc.nextLine();
于 2013-10-02T07:32:40.603 回答
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);
于 2013-10-02T07:33:18.063 回答
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);


 }

} 
于 2013-10-02T07:35:32.507 回答