2017-06-03 49 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(); 
相关问题