局部变量不会初始化(Java)
我试着写一个简单的掷骰子游戏,如果骰子匹配,那就是赢,如果他们相距一个数字,那就是平局(junker),如果他们都不满足这两个条件,那就是输 我使用的是do while循环,似乎无法初始化局部变量:局部变量不会初始化(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
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;
这是因为局部变量在默认情况下不会初始化(与字段不同)。你到底在说什么?