字符串初始化
String Initializing
我正在创建一个 TicTacToe 游戏,但我遇到了字符串问题
代码:
import java.util.Scanner;
public class TicTacToe {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String player1Letter;
String player2Letter;
System.out.print("Player 1 Name: ");
String player1 = input.next();
System.out.print('\f');
System.out.print("Player 2 Name: ");
String player2 = input.next();
System.out.print('\f');
System.out.print(player1 + ", Choose X or O: ");
String letter = input.next();
if (letter.equalsIgnoreCase("x")) {
player1Letter = "X";
} else {
player2Letter = "O";
}
if (letter.equalsIgnoreCase("o")) {
player1Letter = "O";
} else {
player2Letter = "X";
}
System.out.print('\f');
System.out.println("How To");
System.out.println("-------");
System.out.println();
System.out.println(" 1 | 2 | 3 ");
System.out.println("-----------");
System.out.println(" 4 | 5 | 6 ");
System.out.println("-----------");
System.out.println(" 7 | 8 | 9 ");
System.out.println();
while (true) {
System.out.print("Type 'begin' To Begin: ");
String begin = input.next();
if (begin.equalsIgnoreCase("begin")) {
break;
} else if (!begin.equals("begin")) {
System.out.print('\f');
System.out.println("Incorrect Syntax");
System.out.println();
}
}
System.out.println(player1 + "'s Turn " + player1Letter);
System.out.println("-----------------------------------");
System.out.println();
System.out.println(" | | ");
System.out.println("-----------");
System.out.println(" | | ");
System.out.println("-----------");
System.out.println(" | | ");
}
}
朝底部显示
System.out.println(player1 + "'s Turn " + player1Letter);
我收到错误 "variable player1Letter might not have been initialized"。我在 if 语句外创建了字符串,并在 if 语句内初始化了它们。现在我打电话给它,我不知道这里出了什么问题。谢谢!
此消息告诉您在代码中至少有一条路径变量在首次使用前未初始化。 明确赋值分析消除了其他语言中最常见的错误原因之一。
在这种情况下,如果letter
既不等于"x"也不等于"o",那么player1Letter将不会被初始化。
您可以通过确保 player1Letter
和 player2Letter
始终在首次访问之前初始化来解决此问题。一种方法是:
boolean isPlayer1X = letter.equalsIgnoreCase("x");
String player1Letter = isPlayer1X ? "X" : "O";
String player2Letter = isPlayer1X ? "O" : "X";
像这样更改您的初始化代码:
if (letter.equalsIgnoreCase("x")) {
player1Letter = "X";
player2Letter = "O";
} else {
player1Letter = "O";
player2Letter = "X";
}
因此您将始终初始化这两个变量
试试这个:
player2Letter = "O";
player1Letter = "X";
if (letter.equalsIgnoreCase("x")) {
player2Letter = "X";
player1Letter = "O";
}
您正在 if
的一侧初始化一个字符串,但另一侧没有。您需要在 both sides of the same if
上初始化一个字符串,以便编译器能够确定该字符串已经已初始化。
最简单的选择是在声明时初始化两个字符串。
您正在 if 正文中初始化字符串。仔细阅读错误。 if 语句可能并非始终为真。所以为了确保你的变量总是被初始化,在 if 条件之外初始化它。希望这有帮助:)
我正在创建一个 TicTacToe 游戏,但我遇到了字符串问题
代码:
import java.util.Scanner;
public class TicTacToe {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String player1Letter;
String player2Letter;
System.out.print("Player 1 Name: ");
String player1 = input.next();
System.out.print('\f');
System.out.print("Player 2 Name: ");
String player2 = input.next();
System.out.print('\f');
System.out.print(player1 + ", Choose X or O: ");
String letter = input.next();
if (letter.equalsIgnoreCase("x")) {
player1Letter = "X";
} else {
player2Letter = "O";
}
if (letter.equalsIgnoreCase("o")) {
player1Letter = "O";
} else {
player2Letter = "X";
}
System.out.print('\f');
System.out.println("How To");
System.out.println("-------");
System.out.println();
System.out.println(" 1 | 2 | 3 ");
System.out.println("-----------");
System.out.println(" 4 | 5 | 6 ");
System.out.println("-----------");
System.out.println(" 7 | 8 | 9 ");
System.out.println();
while (true) {
System.out.print("Type 'begin' To Begin: ");
String begin = input.next();
if (begin.equalsIgnoreCase("begin")) {
break;
} else if (!begin.equals("begin")) {
System.out.print('\f');
System.out.println("Incorrect Syntax");
System.out.println();
}
}
System.out.println(player1 + "'s Turn " + player1Letter);
System.out.println("-----------------------------------");
System.out.println();
System.out.println(" | | ");
System.out.println("-----------");
System.out.println(" | | ");
System.out.println("-----------");
System.out.println(" | | ");
}
}
朝底部显示
System.out.println(player1 + "'s Turn " + player1Letter);
我收到错误 "variable player1Letter might not have been initialized"。我在 if 语句外创建了字符串,并在 if 语句内初始化了它们。现在我打电话给它,我不知道这里出了什么问题。谢谢!
此消息告诉您在代码中至少有一条路径变量在首次使用前未初始化。 明确赋值分析消除了其他语言中最常见的错误原因之一。
在这种情况下,如果letter
既不等于"x"也不等于"o",那么player1Letter将不会被初始化。
您可以通过确保 player1Letter
和 player2Letter
始终在首次访问之前初始化来解决此问题。一种方法是:
boolean isPlayer1X = letter.equalsIgnoreCase("x");
String player1Letter = isPlayer1X ? "X" : "O";
String player2Letter = isPlayer1X ? "O" : "X";
像这样更改您的初始化代码:
if (letter.equalsIgnoreCase("x")) {
player1Letter = "X";
player2Letter = "O";
} else {
player1Letter = "O";
player2Letter = "X";
}
因此您将始终初始化这两个变量
试试这个:
player2Letter = "O";
player1Letter = "X";
if (letter.equalsIgnoreCase("x")) {
player2Letter = "X";
player1Letter = "O";
}
您正在 if
的一侧初始化一个字符串,但另一侧没有。您需要在 both sides of the same if
上初始化一个字符串,以便编译器能够确定该字符串已经已初始化。
最简单的选择是在声明时初始化两个字符串。
您正在 if 正文中初始化字符串。仔细阅读错误。 if 语句可能并非始终为真。所以为了确保你的变量总是被初始化,在 if 条件之外初始化它。希望这有帮助:)