2014-02-15 56 views
0

有人可以告訴我爲什麼我的程序沒有要求性別時,我運行它,雖然它要求的一切?程序並不要求性別,雖然它要求所有其他

import java.util.*; 

public class registration { 


    public static void main (String[] args) { 
    Scanner in=new Scanner(System.in); 


    System.out.println("Enter first name"); 
    String firstName=in.nextLine(); 
    System.out.println ("Enter surname"); 
    String surname=in.nextLine(); 
    System.out.println ("Enter address"); 
    String address=in.nextLine(); 
    System.out.println ("Enter age"); 
    int age=in.nextInt(); 
    System.out.println ("Enter gender"); 
    String gender=in.nextLine(); 
    System.out.println ("Enter telephone contact"); 
    String teleContact=in.nextLine(); 
    System.out.println ("Enter P for Platinum, G for Gold or S for Silver membership type"); 
    String memberType=in.nextLine(); 
    int birth; 
    birth=2014-age; 
    String surname2; 
    surname2 = surname.toUpperCase(); 
    String memberId; 
    memberId=memberType + surname2 + birth; 
    System.out.printf ("MEMBER ID : " + memberId + " "); 
    System.out.printf ("FIRSTNAME : " + surname + " "); 
    System.out.printf ("SURNAME : " + firstName + " "); 
    System.out.printf ("AGE : " + age + " "); 
    System.out.printf ("GENDER : " + gender + " "); 
    System.out.printf ("TELEPHONE : " + teleContact + " "); 
    System.out.printf ("MEMBERSHIP TYPE : " + memberType + " "); 
    System.out.printf ("ADDRESS : " + address + " "); 


    } 


} 
+0

您是否提供有效年齡? – Leo

回答

1

nextInt()不消耗你正在進入新的行字符,所以它然後通過以下in.nextLine(消耗),因此你沒有得到進入性別的機會。

我建議你爲nextLine()更改nextInt,然後在該行上調用Integer.parseInt(),以捕獲必要的異常,以防行不是有效數字。

1
int age=in.nextInt(); 

只消耗了 「INT」 的一部分。

String gender=in.nextLine(); 

消耗(空)換行並移動上。

需要消耗你都提示性別之前。

0

的問題是,nextInt()不期望換行,所以輸入被停止一個新行掛起。將nextInt()更改爲nextLine()並解析int,它將起作用。

0

in.nextLine()的System.out.println( 「輸入性」)之後;因爲在整數之後它將換行符作爲字符串,因此只需按「enter」即可跳過。