嗨,我是学生,可以给我一个关于这些代码的小费吗?

时间:2016-07-23 07:50:40

标签: java

 System.out.print("Enter name:");
 name=sc.nextLine();

 System.out.print("Enter nric: ");
 nric=sc.nextLine();

 System.out.print("Enter age: ");
 age=sc.nextInt();

 System.out.print("Enter gender(male/female): ");
 gender=sc.nextLine();

 System.out.print("Enter weight:");
 weight=sc.nextInt();

 System.out.print("Enter height: ");
 height=sc.nextDouble();

好吧,每次进入年龄后,我都无法输入性别。如果你能帮助我,我将非常感激,谢谢。

3 个答案:

答案 0 :(得分:0)

nextInt()将在读取int值后停止,它不会转到新行以进一步读取值。 你必须在nextInt()之后添加一个nextLine() 要么 您可以使用nextLine()将age作为String读取,然后使用包装类将其解析为int。

答案 1 :(得分:0)

因为Scanner#nextInt方法不使用输入的最后一个换行符,因此在下次调用Scanner#nextLine时会消耗该换行符  因此,对于您的程序,您必须使用另一个nextLine来使用nextLine

在输入年龄

后添加sc.nextLine时会很完美
    <p:selectOneMenu id="country" value="#{empCon.selectedCountry}" required="true" onchange="PF('confirm').show()">
        <f:selectItem itemLabel="-SELECT-" itemValue="NULL" noSelectionOption="true"></f:selectItem>
        <f:selectItems value="#{empCon.country}" 
                                var="a"
                                itemLabel="#{a}"
                                itemValue="#{a}"></f:selectItems>
    </p:selectOneMenu> <p:confirmDialog widgetVar="confirm" appendToBody="false" message="Are you sure you want to change your selection?" header="Confim" severity="alert">
<h:form>
<p:commandButton value="Yes" process=":te:country" update=":te:province :te:messages" 
actionListener="#{empCon.onSelectCountry}"
oncomplete="PF('confirm').hide()" />
<p:commandButton value="No" type="button"  onclick="PF('confirm').hide()" />
    </h:form>   

答案 2 :(得分:0)

在输入一行字符串之前,只需使用它。

MVA (multi-valued attributes)

您的代码:

sc= new Scanner(System.in);

当您调用nextLine()时,该行将从缓冲区中删除,并从扫描程序中有效地丢弃。