【问题标题】:2 dimensional char array creation/initialization in JavaJava中的二维char数组创建/初始化
【发布时间】:2016-02-01 22:50:13
【问题描述】:

对于编程问题,我已经多次在这里找到我的答案,但问题是这次我不能,不是在这里,不是在网络上,所以我在这里问。

我收到此错误

public char pinakas[][] - 第 4 行,我正在尝试创建/初始化我的二维字符数组(它将存储从 A 到 Z 的字符)

public class Board {

    public char pinakas[][]; 
    pinakas = new char[4][3];


    // constructor - initialize
    public Board() {

        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 4; j++) {
                pinakas[i][j] = '*';
            }
        }
    }

    // Fill board with *
    public void fillBoard1() {
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 4; j++) {
                pinakas[i][j] = '*';
            }
        }
    }

    // Fill board with A
    public void fillBoard2() {
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 4; j++) {
                pinakas[i][j] = 'A';
            }
        }
    }
}

请帮忙,我要疯了 (我正在使用 Eclipse 和 Java 编码(huehue))

【问题讨论】:

  • 请将带有 IDE (eclipse) 标记的问题的提及和标记保留给那些处理 IDE 本身的问题。 IDE 不太可能是您的编程问题的根源。
  • 哪一行代码有这个错误?
  • soz 使用了错误的标签,不知道我面临什么,解决方案很简单,我看到了我的错误,我什至编辑了帖子,因此它不涉及与此问题无关的内容!

标签: java arrays multidimensional-array char


【解决方案1】:

真正的答案是你不能在类体内有表达式。虽然这很好:

public char pinakas[][] = new char[4][3];

你目前拥有的不是。

【讨论】:

  • 在java中你可以同时做到这一点。
  • @afzalex 你真的可以吗?我其实并不知道。编辑:是的,刚刚尝试过。 afzelex 是正确的。
【解决方案2】:

你不能把这段代码挂在你的班级里

pinakas = new char[4][3];

它必须在方法或构造函数中。 或者您可以在定义变量的同时简单地初始化变量:

public char pinakas[][] = new char[4][3];

【讨论】:

    【解决方案3】:

    您的问题是您在 Java 类中将表达式分成两行,这是无效的。代码只能在方法中执行。您只需要将这两行合并为一行:

    变化:

    public char pinakas[][]; 
    pinakas = new char[4][3];
    

    收件人:

    public char pinakas[][] = new char[4][3];
    

    【讨论】:

      【解决方案4】:

      您需要将您的 Pinkas 数组的 2 行合二为一,如下所示:

      public char pinakas[][] = new char[4][3];
      

      然后,您需要在填充数组时修复您的 for 循环,以免出现IndexOutOfBounds 异常:

      public Board() {
          //You were using 5 and 4
          //When you should be using 4 and 3
          for (int i = 0; i < 4; i++) {
              for (int j = 0; j < 3; j++) {
                  pinakas[i][j] = '*';
              }
          }
      }
      

      【讨论】:

        【解决方案5】:

        首先,您有 2 个选项来初始化您的数组:
        1. 可以这样放在类的顶部:

        public char pinakas[][] = new char[4][3];
        

        请注意,在 java 中,大多数程序员会将 [] 放在变量之后而不是变量名之后 2.可以在类的顶部声明,在构造函数中初始化:

        public char pinakas[][];
        
        public Board()
        {
            pinakas = new char[4][3];
            //here you can do whatever you want
        }
        

        其次,您有一个大小为 [4][3] 的 array
        在 for 循环中,您从 0 传递到 4(包括 4)和从 0 到 3(包括 3)。 实际上,第一个位置有 5 个可能的值。和 4 为第二个位置。 所以,即使你设法解决了 1 个问题,你也会得到OutOfBoundsException

        【讨论】:

          【解决方案6】:

          试试这个... public char a[][] = new char[2][3];

          我认为 Eclipse 不支持数组声明,然后在方法之外的类内部进行初始化。

          【讨论】:

            【解决方案7】:

            简单地使用:

            char pinakas[][]=new char[5][4];
            

            避免在不同的步骤中声明和初始化,或者在类之外进行。

            或使用:

            char pinakas[][]=new char[4][3];
            

            然后更改每次迭代的限制(将每个迭代减一)。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2013-12-15
              • 2013-11-21
              • 2016-09-01
              • 2023-04-08
              • 1970-01-01
              • 2012-11-29
              相关资源
              最近更新 更多