为什么我的程序忽略了我的if else语句?

时间:2013-12-01 13:13:13

标签: java if-statement

我的程序应输出“你叫什么名字?”只有输入“hi”和“hello”,但它仍然输出“你叫什么名字?”即使我输入一个数字或一个字符......我我很沮丧。有人可以帮我解决这个问题吗?我认为它与!phrase.equals声明有关......

import java.util.Scanner;
public class prog2 {


public static void main(String[] args)throws Exception {



    String phrase;
    String name;
    char Letter;

    Scanner keyboard = new Scanner(System.in);
    System.out.print("Type a phrase: ");

    phrase = keyboard.nextLine();

    if(!phrase.equals("hi") || !phrase.equals("hello")){   
    System.out.print("What is your name?");               

    Scanner keyboard1 = new Scanner(System.in);

    name = keyboard1.nextLine();

    System.out.print("Your name is" +name);
    }else{

        Scanner keyboard2 = new Scanner(System.in);
        System.out.print("Type a Letter: ");

        Letter = (char) System.in.read();
        System.in.read();

        System.out.print("Your letter is "+ Letter);
    }


}

3 个答案:

答案 0 :(得分:3)

条件!phrase.equals("hi") || !phrase.equals("hello")始终为真。

如果单词为hi,则为false or true;如果单词为hello,则为true or false。否则为true or true。你没有描述预期的行为,因此我无法分辨出什么是正确的。

答案 1 :(得分:0)

它没有做你想做的事。查看De Morgan法律。

您可能想要这样做:

if(!(phrase.equals("hi") || phrase.equals("hello")))

与您所做的相同,因为if(!a || !b)if(!(a || b))不同。

答案 2 :(得分:0)

尝试:

if(phrase.equals("hi") || phrase.equals("hello")) {
//rest of your code
}