Java 错误:与2D数组和.split不兼容的类型
昨天问同样的问题,但今天在不同的情况下可以做同样的事情Java 错误:与2D数组和.split不兼容的类型,java,multidimensional-array,incomplete-type,Java,Multidimensional Array,Incomplete Type,昨天问同样的问题,但今天在不同的情况下可以做同样的事情 single[z][i] = (board[i].split("?!^")); 这一行给了我一个错误:需要不兼容的类型:String 找到:字符串[] 1错误 我知道这是因为它是一个2D数组,split提供了自己的字符串输出,但不知道如何修复。 以下是我的全部代码: public static void main(String[] args) { Scanner in = new Scanner(System.in);
single[z][i] = (board[i].split("?!^"));
这一行给了我一个错误:需要不兼容的类型:String
找到:字符串[]
1错误
我知道这是因为它是一个2D数组,split提供了自己的字符串输出,但不知道如何修复。
以下是我的全部代码:
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int player;
String board[] = new String[8];
String single [] [] = new String [8] [8];
//single[0][0] = "hi";
//If player is 1, I'm the first player.
//If player is 2, I'm the second player.
player = in.nextInt();
//Read the board now. The board is a 8x8 array filled with 1 or 0.
for(int i = 0; i < 8; i++) {
if(in.hasNext()){
board[i]= in.next();
}
}
for(int z = 0; z < 8; z++){
for(int i = 0; i < 8; i++) {
single[z][i] = (board[i].split("?!^"));
}
}for(int z = 0; z < 7; z++)
for(int i = 0; i < 7; i++) {
if((single[z][i].equals(1)) && (single[z][i+1].equals(1)) &&(single[z+1][i].equals(1))){
System.out.print(z + ""+ i);
}
}
nextMove(player,board);
}
}
publicstaticvoidmain(字符串[]args){
扫描仪输入=新扫描仪(系统输入);
国际球员;
线板[]=新线[8];
单个字符串[][]=新字符串[8][8];
//单[0][0]=“hi”;
//如果玩家是1,我是第一个玩家。
//如果玩家是2,我是第二个玩家。
player=in.nextInt();
//现在阅读电路板。电路板是一个8x8阵列,填充1或0。
对于(int i=0;i<8;i++){
if(在.hasNext()中){
board[i]=in.next();
}
}
对于(intz=0;z<8;z++){
对于(int i=0;i<8;i++){
单[z][i]=(板[i]。拆分(“?!^”);
}
}对于(intz=0;z<7;z++)
对于(int i=0;i<7;i++){
如果((单[z][i].equals(1))&&(单[z][i+1].equals(1))&(单[z+1][i].equals(1))){
系统输出打印(z+“”+i);
}
}
下一个移动(玩家、棋盘);
}
}
假设拆分
预计将返回一个表示所需8个元素的字符串数组
s,则应仅在外部循环中执行拆分
s,然后在内部循环或数组复制方法中迭代拆分
的结果:
for(int z = 0; z < 8; z++){
String[] tokens = board[z].split("?!^");
// Should have at least 8 tokens here.
// Copy the first 8 into single[z]
single[z] = new String[8];
System.arraycopy(tokens, 0, single[z], 0, 8);
}
您甚至没有解释代码的意图。我们可以通过阅读来猜测,但这很无聊。您必须使您的问题易于阅读。很抱歉,我正在尝试确定游戏
String的网格上1的坐标。split()
返回字符串[]
;您正在尝试将其分配给字符串
。谢谢。您能解释一下这是如何工作的,以及我将如何在我的代码中实现它吗?我试过了,我想我做到了wrong@JTattack要获得2D 8x8字符串数组,需要将8个字符串拆分为8个片段。该循环用于第一维度;内部循环被arraycopy
替换,如果您知道split
的结果正好有8个项目,您可以进一步简化它(请参见编辑)。好的,谢谢,这是可行的,但是我需要i和z bc,这是图形的行和列部分,所以我需要这两个,但它会给我不兼容的部分。希望这能让你sence@JTattacksplit(“?!^”)
已经返回了一个1D数组,因此i
维度已经存在,在拆分时您不需要对其进行任何操作。在这一个循环之后添加一对嵌套循环,并打印您用z
和i
获得的元素,以查看发生了什么。我可以这样做,但我需要在手之前保存所有的点。如果我在循环完成后这样做,数据会被忘记吗?
for(int z = 0; z < 8; z++){
single[z] = board[z].split("?!^");
}
for(int z = 0; z < 8; z++){
for(int i = 0 ; i < 8 ; i++) {
System.out.print("single["+z+"]["+i+"]=");
System.out.print(single[z][i]);
}
}