0

这是我的代码。我需要 wordOfTheDay 和答案保持不变。我需要用户输入“今天的单词是什么”和“3 * 8 的答案是什么”的答案,根据他们的答案,它要么被接受为正确答案,要么被拒绝,然后他们再试一次。我不断收到此编译器错误

错误:无法为最终变量 wordOfTheDay 赋值错误:无法为最终变量答案赋值

//The word of the day is Kitten 
import java.util.Scanner;

public class SchmeisserKLE41 {

   public static final Scanner input = new Scanner(System.in);
   public static final String wordOfTheDay = "Kitten";
   public static final int answer = 24;

   public static void main(String[] args) {
     int attempts = 3;
     System.out.printf("Please enter the word of the day:");
      wordOfTheDay = input.nextLine();

do{
  -- attempts;
  if(attempts == 0){
    System.out.printf("Sorry! You've exhausted all your attempts!");
    break;
  }
  System.out.printf("Invalid! Try again %d attempt(s) left.", attempts);
  wordOfTheDay = input.nextLine();

}
  while(!wordOfTheDay.equals("Kitten"));


  System.out.printf("\nWhat is the answer to 3 * 8?");
  answer = input.nextInt();

 System.exit(0);
 }
}
4

3 回答 3

0

wordOfTheDay = input.nextLine();你已经设置好了wordOfTheDay。它是最终的,所以你只能设置一次......

于 2014-10-13T03:30:59.663 回答
0
public static final String wordOfTheDay = "Kitten";

由于 wordOfTheDay 声明为 final,因此在此之后不能为其分配任何值。

所有最终变量都不能被多次赋值。

所以从它中删除final,如下所示。

public static  String wordOfTheDay = "Kitten";

现在您可以多次赋值。

于 2014-10-13T03:35:29.530 回答
0

你需要两个不同的变量。一个存储当天的单词,另一个存储用户的猜测。因此,您需要为它们设置两个不同的名称。也许wordOfTheDayusersGuess。然后您可以在用户猜测后比较它们,方法是将循环结束时的条件更改为while(!wordOfTheDay.equals(usersGuess));

于 2014-10-13T03:42:43.880 回答