爲了解釋我在做什麼,我基本上將X和O的字符串作爲輸入字符串,將其轉換爲數組,因此XXXOXOXOO作爲輸入將是相同的數組。然後,我正在檢查每個可能的情況,哪一個可以獲勝,協調明智,如果它匹配通過if語句,則返回與誰獲勝相對應的數字。編寫一個Tic Tac Toe程序,但輸出不是它應該的,任何人都可以幫忙?
但它不是很工作,哈哈。它似乎只輸出O作爲勝利者,在明顯的情況下X應該贏。
任何人都可以伸出援手嗎?預先感謝,謝謝。
import java.util.Scanner;
public class TicTacToe {
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
System.out.println("Type in a board for analysis");
String b = keyboard.nextLine();
drawBoard(b);
int result = decide(b);
if (result == 1) {
System.out.println("Win for X");
}
else if (result == 0) {
System.out.println("Win for O");
}
else if (result == 3) {
System.out.println("Draw");
}
else {
System.out.println("Game Unfinished");
}
}
public static int decide(String scheme) {
int decision = 0;
String boardScheme[] = new String[9];
for (int i = 0; i < 9; i++) {
boardScheme[i] = scheme.substring(i,i+1);
}
if ((boardScheme[0] == boardScheme[1] && boardScheme[0] == boardScheme[2]) || (boardScheme[0] == boardScheme[3] && boardScheme[0] == boardScheme[6]) || (boardScheme[0] == boardScheme[4] && boardScheme[0] == boardScheme[8])) {
if (boardScheme[0] == "X") {
decision = 1;
}
else {
decision = 0;
}
}
else if (boardScheme[3] == boardScheme[4] && boardScheme[3] == boardScheme[5]) {
if (boardScheme[3] == "X") {
decision = 1;
}
else {
decision = 0;
}
}
else if (boardScheme[6] == boardScheme[7] && boardScheme[6] == boardScheme[8]) {
if (boardScheme[6] == "X") {
decision = 1;
}
else {
decision = 0;
}
}
else if (boardScheme[1] == boardScheme[4] && boardScheme[1] == boardScheme[7]) {
if (boardScheme[1] == "X") {
decision = 1;
}
else {
decision = 0;
}
}
else if ((boardScheme[2] == boardScheme[5] && boardScheme[2] == boardScheme[8]) || (boardScheme[2] == boardScheme[4] && boardScheme[2] == boardScheme[6])) {
if (boardScheme[2] == "X") {
decision = 1;
}
else {
decision = 0;
}
}
return decision;
}
public static void drawBoard(String scheme) {
if (scheme.length() == 9) {
String board[] = new String[9];
for (int i = 0; i < 9; i++) {
board[i] = scheme.substring(i,i+1);
}
System.out.println(board[0] + " | " + board[1] + " | " + board[2]);
System.out.println(board[3] + " | " + board[4] + " | " + board[5]);
System.out.println(board[6] + " | " + board[7] + " | " + board[8]);
}
else {
System.out.println("Please input 9 characters, no more, no less.");
}
}
}
你不能使用二維數組嗎? –
我看到一個問題:從不使用'=='比較兩個字符串,因爲這將檢查一個對象是否與另一個對象相同 - 您不關心的東西。而是使用String方法'equals(...)'或'equalsIgnoreCase(...)',因爲它們將檢查兩個字符串是否具有相同順序的相同字符。 –