【问题标题】:Code keeps saying I haven't initialized my string variable 'restart' in my code for a guessing game代码一直说我没有在我的代码中为猜谜游戏初始化字符串变量“restart”
【发布时间】:2020-07-25 14:41:29
【问题描述】:

我正在尝试为我目前正在使用循环的作业构建一个猜谜游戏。我正在尝试让我的游戏为用户提供再次玩的选项。我在尝试设置最后一段代码时遇到了困难,所以我按照 youtube 上的一个示例进行操作。虽然我已经声明了变量 restart 编译器一直告诉我我没有初始化它。对此代码的任何帮助将不胜感激

import java.util.Scanner;
import java.util.Random;

public class High_Low_Game {

    public static void main (String[] args){


    Random rand=new Random();
    Scanner scan= new Scanner(System.in);
    int guess,num,count=0;
    String restart;

    num=rand.nextInt(99+1);
    do{

    System.out.println("Please enter a number from 1-100,press 0 to quit");
    guess=scan.nextInt();
    count++;
    while(guess!=0)
        if(guess>num){

           System.out.println("Your guess was too high, try again");
           guess=scan.nextInt();
           count++;}
        else

         if(guess<num){
           System.out.println("The number is too low,enter another guess ");
           guess=scan.nextInt();
           count++;}
       else
        if(guess==num){
            System.out.println("You have guessed correctly");
            System.out.println("It took you "+count+ " guesses");
            System.out.println("Would you like to play again? (Y/N)");
            restart=scan.next();}
     }while(restart.equals("Y"));

    }            
   }

【问题讨论】:

  • 如果guess != num,你认为restart的价值是多少?
  • @Andreas 他可能认为它包含垃圾,我回答了它,你认为它是正确的
  • @AbhinavChauhan 如果他认为它包含垃圾,那么他已经知道它没有用值初始化,并且不需要这个问题。
  • 我的意思是他可能认为它可以包含,但它没有,他可能会想为什么

标签: java variable-assignment hilo


【解决方案1】:

这表明该变量尚未初始化,因为只有当guess 为== num 时才会初始化。

【讨论】:

    【解决方案2】:

    如果您需要这个简单问题的详细答案,请阅读本文

    与成员变量不同,局部变量在类加载时不会获得默认值。

    类加载是java中的运行时事情,这意味着当您创建一个对象时,该类被加载类加载仅使用默认值初始化成员变量JVM不需要时间为您的局部变量提供默认值,因为某些方法永远不会被调用,因为方法调用可以是有条件的,所以如果这些默认值永远不会被使用,为什么要花时间给它们默认值并降低性能。

    在您的情况下,restart 是 main 方法的局部变量,因此它不会获得默认值,如果您来自 C、C++ 背景,您倾向于认为它可能包含垃圾值,但在 java 中没有这样的东西。

    guess == num 为假时,restart.equals("Y")restart 不包含任何内容

    总之,在使用之前,你的变量应该有一些价值。

    【讨论】:

      猜你喜欢
      • 2016-11-28
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多