局部变量不会初始化(Java)

局部变量不会初始化(Java),java,do-while,local-variables,Java,Do While,Local Variables,我试着写一个简单的掷骰子游戏,如果骰子匹配,那就是赢,如果他们相距一个数字,那就是平局(junker),如果他们都不满足这两个条件,那就是输 我使用的是do while循环,似乎无法初始化局部变量: import java.util.Scanner; public class Program06 { public static void main(String[] args) { Scanner stdIn = new Scanner(System.in); String r

我试着写一个简单的掷骰子游戏,如果骰子匹配,那就是赢,如果他们相距一个数字,那就是平局(junker),如果他们都不满足这两个条件,那就是输

我使用的是do while循环,似乎无法初始化局部变量:

import java.util.Scanner;

public class Program06 
{
public static void main(String[] args)
{
    Scanner stdIn = new Scanner(System.in);
    String response = "k";

    int d1 = 1;
    int d2;
    int win;
    int lose;
    int junker;

    System.out.println("Welcome to Computer Dice");
    System.out.println("---------------------------");
    System.out.println("\nYou will first roll your dice");

    System.out.println("Next the outcome of your roll will be determined:");

    System.out.println("Any pair and you Win");
    System.out.println("Anything else and you Lose");
    System.out.println("\n----------------------------");

    System.out.println();

    do
    {

    System.out.println("Player");
    System.out.println("----------");

    d1 = (int)(Math.random() * 6) + 1;
    d2 = (int)(Math.random() * 6) + 1;

    if (d1 == d2)
        ++win;
    else if
        (d1 == d2 +1 || d1 == d2 -1)
        ++junker;
    else
        ++lose;

    System.out.print("Do you wish to play again? [y, n]: ");
    response = stdIn.next();

    } while (d1 == -1);
    stdIn.close();
    }
}

我尝试过在if-else语句中插入括号,但没有效果。

您没有为
win
lose
junker
设置初始值,但您正在尝试增加它们


首先,您必须将它们设置为
0

它显示了win、junker和lose的此错误,它们尚未分配值。要么将它们设置为零,要么在类级别将它们设置为静态变量,从而自动将它们设置为零。

这些变量可能与do-while循环“分离”,这意味着您应该在循环本身内部初始化它们。

您的
win
lose
junker
字段是局部变量,这意味着它们不会像实例变量那样自动初始化。您必须手动初始化它们。

而不是:

int win;
int lose;
int junker;
按如下方式初始化这些局部变量:

int win = 0;
int lose = 0;
int junker = 0;

这是因为局部变量在默认情况下不会初始化(与字段不同)。

你到底在说什么?