我的程序应输出“你叫什么名字?”只有输入“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);
}
}
答案 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
}