当我尝试编译它时,我的代码继续显示'数组必需,但java.lang.String找到'[重复]

问题描述 投票:-5回答:1

这个问题在这里已有答案:

我正在尝试构建一个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

我没有得到这个。

java arrays string bluej
1个回答
0
投票

问题是你在函数外定义了“int [] b”。以及“打印机”方法的字符串b。

因此在打印机方法中,b是一个字符串,但是你试图在switch case中指定为一个数组。

只需改变以下内容,那就没关系了。

变化1:public void printer(int a,**String str**) 变化2:switch(**str**)

© www.soinside.com 2019 - 2024. All rights reserved.