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();
好吧,每次进入年龄后,我都无法输入性别。如果你能帮助我,我将非常感激,谢谢。
答案 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()时,该行将从缓冲区中删除,并从扫描程序中有效地丢弃。