这个问题在这里已有答案:
我正在尝试构建一个TIC-TAC-TOE GAME。为此,我使用了一个2-D String数组。我宣布它是全球性的。我不得不在某个时候更新下标。但出了点问题,我不知道是什么。谁能告诉我出了什么问题。
String[][] a={{" "," "," |"," "," "," |"," "," "," ",},
{" "," a "," |"," "," b "," |"," "," c "," ",},
{"___","___","__|","___","___","__|","___","___","___"},
{" "," "," |"," "," "," |"," "," "," ",},
{" "," d "," |"," "," e "," |"," "," f "," ",},
{"___","___","__|","___","___","__|","___","___","___"},
{" "," "," |"," "," "," |"," "," "," ",},
{" "," g "," |"," "," h "," |"," "," i "," ",},
{" "," "," |"," "," "," |"," "," "," ",}};
int[] b={1,1,1,1,1,1,1,1,1};
public void printer(int a,String b)
{
String[][] d={{" "," "," |"," "," "," |"," "," "," ",},
{" "," a "," |"," "," b "," |"," "," c "," ",},
{"___","___","__|","___","___","__|","___","___","___"},
{" "," "," |"," "," "," |"," "," "," ",},
{" "," d "," |"," "," e "," |"," "," f "," ",},
{"___","___","__|","___","___","__|","___","___","___"},
{" "," "," |"," "," "," |"," "," "," ",},
{" "," g "," |"," "," h "," |"," "," i "," ",},
{" "," "," |"," "," "," |"," "," "," ",}};
String c=" X ";
if(a==1)
{ c=" X ";
}
if(a==2)
{ c=" O ";}
switch(b)
{
case "a":
if(b[0]==1)
{ a[1][1]=c;
b[0]=(c.compareTo("X")==1)?-1:0;break;}
case "b":
if(b[0]==1){
a[1][4]=c;
b[1]=(c.compareTo("X")==1)?-1:0;break;}
case "c":
if(b[0]==1){
a[1][7]=c;
b[2]=(c.compareTo("X")==1)?-1:0;break;}
case "d":
if(b[0]==1){
a[4][1]=c;
b[3]=(c.compareTo("X")==1)?-1:0;break;
}
case "e":
if(b[0]==1)
{a[4][4]=c;
b[4]=(c.compareTo("X")==1)?-1:0;break;
}
case "f":
if(b[0]==1){
a[4][7]=c;
b[5]=(c.compareTo("X")==1)?-1:0;break;
}
case "g":
if(b[0]==1){
a[7][1]=c;
b[6]=(c.compareTo("X")==1)?-1:0;break;
}
case "h":
if(b[0]==1){
a[7][4]=c;
b[7]=(c.compareTo("X")==1)?-1:0;
break;}
case "i":
if(b[0]==1){
a[7][7]=c;
b[8]=(c.compareTo("X")==1)?-1:0;break;
}
编译器不断给出错误array expected,but java.lang.String found
.I提供了更大的代码,所以有人可以调查此事吗?
在java中是否允许用字符串更新字符串数组的下标?我在switch-case语句中使用字符串出错了吗?
(我对面向对象编程知之甚少。我是这个领域的新手)。
在String数组的情况下
a[7][7]=some string value
错误是array required but integer found
但是在整数数组b[4]=some integer value
的情况下
错误是array required but string found
我没有得到这个。
问题是你在函数外定义了“int [] b”。以及“打印机”方法的字符串b。
因此在打印机方法中,b是一个字符串,但是你试图在switch case中指定为一个数组。
只需改变以下内容,那就没关系了。
变化1:public void printer(int a,**String str**)
变化2:switch(**str**)