我评论了代码不起作用的地方。为什么不呢?我确保calculate()
为==
到computerInput()
,但它打印出“这不起作用”!!那是为什么?
import java.util.Scanner;
class Drank {
private static String[] userOption = new String[] { "Rock", "Paper", "Scissors" };
private static String[] computerOption = new String[] { "Rock", "Paper", "Scissors" };
public static void main(String[] args) {
System.out.println("Enter: Rock, Paper Or Scissors");
System.out.println(calculate());
System.out.println(computerInput());
result();
}
public static int calculate() {
Scanner input = new Scanner(System.in);
String userInput = input.nextLine();
int calculate = 0;
if (userInput.equals(userOption[0])) {
calculate = 0;
} else if (userInput.equals(userOption[1])) {
calculate = 1;
} else if (userInput.equals(userOption[2])) {
calculate = 2;
}
return calculate;
}
public static int computerInput() {
int ai = (int) (Math.random() * 3);
return ai;
}
public static void result() {
if (calculate() == computerInput()) {
System.out.println("Computer's Pick:" + computerOption[computerInput()]);
} else {
// THIS IS WHERE THE PROBLEM
// IS! It always prints out
// the'else' even when both
// are equal?
System.out.println("This doesnt work");
}
}
}
答案 0 :(得分:7)
您再次调用方法,而不是使用重用它们的返回值。
int calc = calculate();
int comp = computerInput();
System.out.println(calc);
System.out.println(comp);
result(calc, comp); // Reuse them here!
当然,这需要您为result
方法添加额外的参数。
public static void result(int calc, int comp) // Add params here
{
if(calc == comp) // Compare them here!
{
System.out.println("Computer's Pick:" + computerOption[computerInput()] );
} else
{
System.out.println("This doesnt work");
}
}
当您调用方法两次时,将生成一个随机数两次,并且会询问用户输入两次。
答案 1 :(得分:1)
您的代码在computerInput()
中使用随机数生成器。每次运行该方法时,此值都会更改。因此,您必须很幸运地猜到计算机的答案。但你显然不能正确猜测它。
您正在调用computerInput()
,这意味着即使您猜对了正确的值,显示的结果也可能不同。
答案 2 :(得分:0)
我在代码中看不出任何原因,为什么比较不起作用。
请注意,每次调用computerInput时,它都会返回不同的值,因此它打印的值与比较中使用的值不同。
您需要将来自computerInput的结果存储在某处以在两个位置显示相同的数字。
答案 3 :(得分:0)
可能你应该试试这个:
public static void result(){
int calculate = calculate();
int computerInput = computerInput();
if(calculate == computerInput){
System.out.println("Computer's Pick:" + computerOption[computerInput] );
} else {
System.out.println("This doesnt work");
}
}
答案 4 :(得分:0)
我做了一些小改动,(不是两次调用方法)
main(){
int c = calculate();
int ci=computerInput();
}
public static void result(int c, int ci){
if(c==ci){
System.out.println("Computer's Pick:" + computerOption[computerInput()] );
} else {
System.out.println("This doesnt work"); //THIS IS WHERE THE PROBLEM IS! It always prints out the'else' even when both are equal?
}