如何在java中接受来自用户的不同数据类型

时间:2013-10-02 07:29:34

标签: java

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

5 个答案:

答案 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);


 }

}