类常量最终变量

时间:2014-10-13 03:29:09

标签: java variables final class-constants

这是我的代码。我需要wordOfTheDay并回答保持不变。我需要一个用户输入一个答案"当天的字是什么"和#34; 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);
 }
}

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

public static final String wordOfTheDay = "Kitten";

因为wordOfTheDay声明为final,所以在此之后不能赋值。

所有最终变量都不能多次分配一个值。

所以从中删除最终结果。

public static  String wordOfTheDay = "Kitten";

现在您可以任意次数分配值。

答案 2 :(得分:0)

您需要两个不同的变量。一个用于存储当天的单词,另一个用于存储用户的猜测。所以你需要有两个不同的名字。可能是wordOfTheDayusersGuess。然后,您可以在用户猜测后通过将循环结束时的条件更改为while(!wordOfTheDay.equals(usersGuess));来比较它们