java - 当我尝试编译时,我的代码一直显示“需要数组,但找到了 java.lang.String”
问题描述
我正在尝试构建一个 TIC-TAC-TOE GAME。为此,我使用了一个二维字符串数组。我宣布它为全球性的。我不得不在某个时间点更新下标。但是出了点问题,我不知道是什么。谁能告诉我出了什么问题。
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
我提供了更大的代码,所以有人可以调查此事吗?
java中是否允许用字符串更新字符串数组的下标?在 switch-case 语句中使用字符串是否出错了?
(我不太了解面向对象的编程。我是这个领域的新手)。
如果是字符串数组
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是一个字符串,但是您尝试将其分配为开关盒中的一个数组。
只需更改以下内容,就可以了。
变更一:public void printer(int a,**String str**)
变更二:switch(**str**)
推荐阅读
- android - android 画布画线,两边都有指针结束的箭头。谁能帮帮我。?
- python - 配置解析器没有返回正确的变量 - 在单词周围省略 ( )
- php - 如何使用 PHP 每分钟向电报机器人发送通知?
- python - 使用列表的值更新嵌套字典
- c++ - C++ With Initializer List 一个东西,什么时候用普通的构造函数?
- android-listview - 为 ListView Android 使用 Hashmap
- ruby-on-rails - 在控制器中创建模型实例为 id 和时间戳返回 nil Rails 6
- php - 在 PHP 中,如何获取包含夏令时 (DLS) 的日历的 UTC 日期
- html - Css,当我的屏幕为 1700px 宽时,宽度 100% 远小于 500px
- python - Kivy,ScreenManager 在切换到上一个屏幕时说没有屏幕