Java 避免初始化变量以使代码仍然工作

Java 避免初始化变量以使代码仍然工作,java,variables,Java,Variables,我做了一个猜谜游戏,第一次问: -有多少玩家想玩这个游戏 -分配所有玩家 -开始按顺序猜数字 获胜者是通过使用随机数猜出正确数字的玩家 代码工作没有问题,但有一件事与我有关; 我需要首先初始化guessingNumber变量,这看起来有点奇怪,因为我需要键入任何我知道不会随机生成的数字,如果我只声明变量int guessingNumber,我会在这里得到一个错误 } while (los != guessingNumber); - guessingNumber is underlined wit

我做了一个猜谜游戏,第一次问: -有多少玩家想玩这个游戏 -分配所有玩家 -开始按顺序猜数字 获胜者是通过使用随机数猜出正确数字的玩家

代码工作没有问题,但有一件事与我有关; 我需要首先初始化guessingNumber变量,这看起来有点奇怪,因为我需要键入任何我知道不会随机生成的数字,如果我只声明变量int guessingNumber,我会在这里得到一个错误

} while (los != guessingNumber); - guessingNumber is underlined with error :
局部变量guessingNumber可能尚未初始化

您知道如何避免初始化-1位并使代码仍然工作吗

public class kopia {

    public static void main(String[] args) {

        Random rand = new Random();
        int los = rand.nextInt(11);
        int numberofPlayers;
        int guessingNumber= -1;

        Scanner scan7 = new Scanner(System.in);
        Scanner scan = new Scanner(System.in);
        Scanner scan2 = new Scanner(System.in);

        do {
            System.out.println(" Type number of players :");
            while (!scan7.hasNextInt()) {
                System.out.println("Sorry, bad data");
                scan7.next();
            }
            numberofPlayers = scan7.nextInt();
        } while (numberofPlayers <= 0);

        String gracze[] = new String[numberofPlayers];
        int liczbaProbGraczy[] = new int[numberofPlayers];

        for (int i = 1; i <= numberofPlayers; i++) { // ++1

            System.out.println("Number of player " + i);
            gracze[i - 1] = scan.nextLine();
        }

        do {

            for (int j = 0; j < gracze.length; j++) {

                System.out.println(" Now guesssing " + gracze[j]);
                System.out.println("Guess number 0 do 10");
                while (!scan2.hasNextInt()) {
                    System.out.println("Cannot recognize this number");
                    scan2.next();
                }
                guessingNumber = scan2.nextInt();

                liczbaProbGraczy[j]++;

                if (guessingNumber == los) {

                    System.out.println("Winner is " + gracze[j] + "\n");

                    for (int c = 0; c < gracze.length; c++) {

                        System.out.println("Number of try's " + gracze[c] + " equals " + liczbaProbGraczy[c]);

                    }

                    break;

                }

            }

        } while (los != guessingNumber);

        scan7.close();
        scan.close();
        scan2.close();

    }
}
公共类科皮亚{
公共静态void main(字符串[]args){
Random rand=新的Random();
int los=兰特nextInt(11);
国际球员人数;
整数猜测数=-1;
扫描仪scan7=新扫描仪(System.in);
扫描仪扫描=新扫描仪(System.in);
扫描仪scan2=新扫描仪(System.in);
做{
System.out.println(“输入玩家数量:”);
而(!scan7.hasNextInt()){
System.out.println(“对不起,数据不正确”);
scan7.next();
}
numberofPlayers=scan7.nextInt();

}当(numberofPlayers您无法将某个变量与未初始化的整数变量进行比较,您需要先对其进行初始化。在您的情况下,如果比较为真,则在同一块中定义整数时,您试图使用该比较。

请注意,没有理由打开3个不同的
扫描仪你可以对任何东西使用相同的一个,有0个不同。谢谢你的输入,我将只使用一个扫描器进行测试
gracze。理论上长度
可以是0,for循环被跳过并且
gussingnumber
没有被询问。所以必须在这里初始化为斜体。@Tomek Młynarski当你在函数(方法)中声明变量时它没有默认值,您必须对其进行初始化。如果您在类级别(例如,在本例中在函数外部)声明变量,则在创建实例时,它将获得默认值。对于int,如果您在函数外部定义它,它将获得0。@Tomek Młynarski Yes声明它为静态猜测数;在主函数外部在你的例子中,如果你在一个方法中声明整数,它就不能被取消初始化…同样,你说“整数不能为空,因为它是一个基元,”如果它是object,你说它会起作用吗?我特别回答了他的问题,是否可以使用未初始化的
int
。也可以使用未初始化的整数。Nvm:)。如果他使用Integer guessingNumber,代码也不会编译。