while
中的复杂条件(检查是否有输入,如果它与m
或f
不同)不起作用:
System.out.println("Insert gender (m / f) ");
while (!stdin.hasNext() & !(temp = stdin.next()).equals("m") & !(temp.equals("f"))) {
System.out.println("try again");stdin.nextLine();
}
inpSexo = temp.charAt(0);
答案 0 :(得分:3)
&
条件中存在按位比较while()
运算符
您应该使用逻辑&&
运算符。
while (stdin.hasNext() && !(temp = stdin.next()).equals("m") && !(temp.equals("f")))
答案 1 :(得分:1)
以下代码段应达到您的目的:
import java.util.Scanner;
public class MyClass {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
boolean valid = false;
String input;
while (!valid){
System.out.println("Insert gender (m / f) ");
input = s.nextLine();
System.out.println("User entered: " + input);
if ((input.equalsIgnoreCase("m")) || (input.equalsIgnoreCase("f"))){
valid = true;
}
}
}
}
答案 2 :(得分:0)
你最好使用它:
class check{
public static void main(String args[]){
try{
DataInputStream in=new DataInputStream(System.in);
System.out.print("Enter Sex (M/F): ");
String s = in.readLine();
if(s.compareTo("M")==0){
System.out.print("Male");
}
if(s.compareTo("F")==0){
System.out.print("F");
}
else{
System.out.println("Invalid input!!!")
}
}
catch(IOException e){
System.out.println("IO ERROR !!!");
System.exit(-1);
}
}
}