今天两次发表有关此主题的道歉,这是一个不同的问题。所以我正在制作一个java问题,我正在创建一个模拟旧电视智力竞赛节目的节目,你打赌你的生活。游戏节目主持人Groucho Marx选择了一个秘密词,然后与参赛者聊了一会儿。如果任一参赛者在一个句子中使用该秘密词,他或她将赢得$ 100.00。
我的程序是为了检查这个秘密词。
这是我的代码:
import java.util.Scanner;
public class Groucho{
String secret;
Groucho(String secret){
this.secret = secret;
}
public boolean saysSecret(String line){
if(secret.equals(line)){
return(true);
}
else{
return(false);
}
}
public static void main(String[] args){
Scanner in = new Scanner(System.in);
String line = in.nextLine();
Groucho g = new Groucho(line);
while (in.hasNextLine()) {
String guess = in.nextLine();
/*Not sure about these next two lines:
*String answer = g.saysSecret(guess);
*/System.out.println(answer);
}
}
}
当我跑的时候没有任何事情发生。我认为应该回归真假?我真正希望它做的是如果该行包含密码,它会打印一条消息,说“你赢了100美元”并告诉我这个秘密字是什么。有人能指出我正确的方向吗? 非常感谢 英里
答案 0 :(得分:1)
正如Sotirios指出的那样,你应该使用saySecret(String)来检查猜测是否正确。 所以循环看起来像:
while (in.hasNextLine()) {
String guess = in.nextLine();
if (g.saysSecret(guess))
{
System.out.println("You got it! The word was: "+g.secret);
} else {
System.out.println("Aw, try again.");
}
}
答案 1 :(得分:0)
您的代码不起作用,因为您要为String分配布尔值。您应该比较g.saysSecret(guess)的返回值,然后如果此值为true,则打印成功的消息(如果此值为false,则打印失败消息)。
另外,你说过:
我真正希望它做的是该行是否包含秘密词......
所以
secret.equals(line)
不是你想要的,因为只有当整行等于秘密词时才会成立。要搜索一行中的单词,您可以使用:
line.contains(secret)
或者你可能需要一个更精细的方法来处理不区分大小写的匹配等等。