gpt4 book ai didi

java - 扫描仪在返回之前需要两次输入

转载 作者:行者123 更新时间:2023-12-01 17:47:28 25 4
gpt4 key购买 nike

我有一些 super 简单的代码,但我正在抓狂。我只是想让 AskQuestion() 在用户给出一个输入后返回,但我不明白为什么这个 java 代码在返回之前需要 2 个输入。最初,我试图用 while 循环来解决这个问题,但我删除了所有内容,发现我认为根本问题是——返回仅在第二次输入后发生,但我不明白为什么。

import java.util.*;

public class RelationalQuestion extends Question {
RelationalQuestion(Animal[] animals, Animal answer) {
super(animals, answer);
}

public boolean AskQuestion() {

Scanner q = new Scanner(System.in);
boolean waitingForValidAnswer = true;
boolean decideToDecrement = true;

System.out.println("What do you want to know?");
System.out.println("\t1. Is it heavier than another animal?");
System.out.println("\t2. Is it taller than another animal?");
System.out.println("\t9. Go back");

if (q.hasNext());
String relationalQuestionNumber = q.nextLine();

return decideToDecrement;
}// end AskQuestion
}// end RelationalQuestion

我认为这不会影响这一点,但这是我从另一个文件调用 AskQuestion () 的方式。

 if (input.equals("1")) {

RelationalQuestion q1 = new RelationalQuestion (animalArray, answer);
q1.AskQuestion();
if (q1.AskQuestion() == false) {
questionsLeft++; //neutalize decrement of questions if returned false
}
}

最佳答案

由于您的代码调用 AskQuestion() 函数两次,您的程序显示了两次问题。

q1.AskQuestion();                //call the first time the function
if (q1.AskQuestion() == false ) //call the second time the function

我的建议是将结果存储到一个新变量中,然后进行比较。

Boolean result = q1.AskQuestion();
if(!result) { //.....// }

或者

只需删除第一个通话即可。

关于java - 扫描仪在返回之前需要两次输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53551475/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com