扫描字符随时间验证

时间:2015-09-16 21:57:32

标签: java while-loop

while中的复杂条件(检查是否有输入,如果它与mf不同)不起作用:

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

3 个答案:

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