首页 > 解决方案 > 当我尝试编译时,我的代码一直显示“需要数组,但找到了 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

我没有得到这个。

标签: javaarraysstringbluej

解决方案


问题是您在函数外部定义了“ int[] b ”。还有字符串 b用于“打印机”方法。

因此,在打印机方法中,b是一个字符串,但是您尝试将其分配为开关盒中的一个数组。

只需更改以下内容,就可以了。

变更一:public void printer(int a,**String str**)
变更二:switch(**str**)


推荐阅读