我在 Java 中返回 String 类型的结果时遇到问题。 这是完整的代码
import java.util.*;
public class Multiplication
{
static Random randomNumbers = new Random();
static Scanner input = new Scanner(System.in);
static int answer;
public static void multiplication()
{
createQuestion(); //display first question
int guess; //student's answer
System.out.print("Your answer is (-1 to quite): ");
guess = input.nextInt();
while(guess != -1)
{
checkAnswer(guess);
System.out.print("Your answer is (-1 to quite): ");
guess = input.nextInt();
}
} //end method multiplication
//create new question
public static void createQuestion()
{
int num_1 = randomNumbers.nextInt(10);
int num_2 = randomNumbers.nextInt(10);
answer = num_1 * num_2;
System.out.printf("How much is %d times %d?\n", num_1, num_2);
}//end method createQuestion
public static String createResponse(boolean correct)
{
if (correct)
switch(randomNumbers.nextInt(4))
{
case 0:
return ("Very good!");
case 1:
return("Excellent!");
case 2:
return("Nice work!");
case 3:
return ("Keep the good work");
} //end switch
//otherwise, assume incorrect
switch(randomNumbers.nextInt(4))
{
case 0:
return("No. Please try again.");
case 1:
return("Wrong. Try once more.");
case 2:
return("Don't give up!");
case 3:
return("No. Keep trying.");
}//end switch
}//end method createResponse
//check in the student answer correctly
public static void checkAnswer(int guess)
{
if(guess != answer)
{
System.out.println(createResponse(false));
}
else
{
System.out.print(createResponse(true));
createQuestion();
}
}//end method checkAnswer
}//end class Multiplication
这是主要方法
public class MultiplicationTest {
public static void main(String[] args) {
Multiplication app = new Multiplication();
app.multiplication();
}
}
问题出在 createResponse(boolean Correct) 方法中。这里 JDE 表示“此方法必须返回 String 类型的结果”
。我已经提到过 String 类型返回。但该程序没有被执行。在方法 createResponse(boolean Correct) 下显示一条红线。
有人认为我搞砸了吗? 提前致谢!
最佳答案
编译器无法断言您的方法返回字符串。
这是因为您的 switch-case 可能无法返回任何内容。
您可以通过放置一个
来满足编译器的要求return null;
在方法的末尾。
关于java - 返回 String 类型的结果 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26820668/