2017-06-03 58 views
0
String [] board = new String [9]; 
String [] sequence = new String [8]; 

sequence[0] = board[0]+board[1]+board[2]; 
sequence[1] = board[0]+board[3]+board[6]; 
sequence[2] = board[0]+board[4]+board[8]; 
sequence[3] = board[1]+board[4]+board[7]; 
sequence[4] = board[2]+board[5]+board[8]; 
sequence[5] = board[2]+board[4]+board[6]; 
sequence[6] = board[3]+board[4]+board[5]; 
sequence[7] = board[6]+board[7]+board[8]; 

說我是做sequence[0]="XXO";如何從另一個數組中更改一個數組的值?

我怎麼能採取sequence[0],改變董事會點,以便:

board[0]="X"; 
board[1]="X"; 
board[2]="O"; 

我試圖for循環運行此,我必須初始化在序列部分之前,我將它打印到屏幕上,並且不能將值設置爲null。

for(int i = 0; i < 8; i++ 
{ 
    if(sequence[i].equals("X"+"X"+" ")) 
    { 
     sequence[i] = "XXO"; 
    } 
} 
+0

現在它是比較複雜的,你是怎麼用'選+ choice'意味着我真的不明白你 –

+0

我想提出一個井字遊戲,而該人可以選擇他們想成爲什麼和計算機的選擇與此相反,但我現在編輯更加合理。我也不想硬編碼所有可以獲勝的方式,所以我認爲這會容易得多,但是我需要做到這一點,以便序列改變板插槽。 –

+0

爲什麼你不使用List,也許你需要類似'List board = new ArrayList <>(); String [] sequence = new String [8];對於(int i = 0; i <8; i ++)if(sequence [i] .equals(「X」+「X」+「」)){i = 0; board.addAll(Arrays.asList(sequence)); } }'? –

回答

1

可以使用String::split其例如返回字符串的數組:

String[] board;//you could also to not initialize the array here 
       //because you will do that in split 
String[] sequence = new String[8]; 
sequence[0] = "XXO"; 
board = sequence[0].split("");//split and initialize the board array 

//print the values 
System.out.println(board[0]); 
System.out.println(board[1]); 
System.out.println(board[2]); 

輸出

X 
X 
O 
+1

請注意,Java 7(你已經鏈接到)以及下面,在開始時會導致一個空字符串,當使用'string.split(「 「)'。出於這個原因,你應該鏈接到Java 8 Docs。對於Java 8及更高版本,您的方式非常完美。採取upvote –

+0

謝謝@ChandlerBing我很欣賞它,但我真的沒有得到你什麼是分裂在java 7和java 8之間的區別對不起你是什麼意思**會在一開始就導致一個空的字符串,當使用string.split(「」)。出於這個原因,你應該鏈接到Java 8 Docs。對於Java 8和以上的**? –

+0

我指的是這個。 [爲什麼在Java 8中,split有時會在結果數組開始時刪除空字符串?](https://stackoverflow.com/questions/22718744/why-in-java-8-split-sometimes-removes-empty-strings-at-開始的結果數組/ /) –

0

通常應該不存儲在不同的方式相同的數據(the Don't Repeat Yourself principle) ,有時是因爲它會導致這樣的混亂。

一個做你想做什麼正確的方法是:

board[0] = String.valueOf(sequence[0].charAt(0)); 
board[1] = String.valueOf(sequence[0].charAt(1)); 
board[2] = String.valueOf(sequence[0].charAt(2)); 
0

當你只需要一個字符作爲您的電路板陣列可以使用字符數組,而不是字符串數組,然後可以使用

元素
char board[] = new char[9]; 
board = sequence[0].toCharArray(); 
相關問題