【问题标题】:Arrays constants can only be used in initializers error数组常量只能用于初始化错误
【发布时间】:2011-09-14 23:07:31
【问题描述】:

考虑:

public proj 3 {

    static string [][]Item;

    public static void main(String [] args){

        Item[][] = {
             {"BH," , "Backhoe,"            , "200.00"},
             {"ER," , "Electric Rake,"      ,  "10.00"},
             {"EL," , "Electric Lawnmower," ,  "15.00"},
             {"TR," , "Trencher"            ,  "35.00"},
             {"MU," , "Mulcher,"            ,  "20.00"},
             {"TS," , "Tree Sprayer,"       ,  "22.00"},
             {"CP," , "Cider Press,"        ,  "30.00"},
             {"PR," , "Pruner,"             ,  "12.00"},
             {"GE," , "Gas Edger,"          ,  "20.00"},
             {"RO," , "Roller,"             ,   "8.00"},

我怎样才能做到这一点,以便我可以从不同的方法调用数组?

【问题讨论】:

  • 我真的不明白你的问题。能不能具体一点。请修复您的代码。
  • 这看起来不太像 Java。 public proj 3{ 是什么? string 应该是 String
  • 对不起,草率的代码,问题是我想声明多维数组以使其成为全局变量。所以可以在整个类中调用数组。

标签: java arrays multidimensional-array


【解决方案1】:

这意味着你必须像这样初始化它:

public class Proj3{

    public static String [][] Item = {
              {"BH," , "Backhoe," , "200.00"},
              {"ER," , "Electric Rake," , "10.00"},
              {"EL," , "Electric Lawnmower," , "15.00"},
              {"TR," , "Trencher" , "35.00"},
              {"MU," , "Mulcher," , "20.00"},
              {"TS," , "Tree Sprayer," , "22.00"},
              {"CP," , "Cider Press," , "30.00"},
              {"PR," , "Pruner," , "12.00"},
              {"GE," , "Gas Edger," , "20.00"},
              {"RO," , "Roller," , "8.00"}
         };

public static void main(String [] args){
     ...
}

如果要使用数组初始值设定项,则不能拆分声明和赋值。

【讨论】:

  • "如果要使用数组初始化器,不能拆分声明和赋值。"这。非常感谢。
  • 除非在下面的各种答案中描述,使用 new 运算符,这在技术上是该规则的一个例外。
【解决方案2】:

如果您的目标是: 1. 在某处声明它; 2.在其他地方初始化它; 3.还是想用{...}格式。 这将起作用:

public proj 3 {

    static string [][]Item;

    public static void main(String [] args) {

        string[][] _Item = {
             {"BH," , "Backhoe," , "200.00"},
             {"ER," , "Electric Rake," , "10.00"},
             {"EL," , "Electric Lawnmower," , "15.00"},
             {"TR," , "Trencher" , "35.00"},
             {"MU," , "Mulcher," , "20.00"},
             {"TS," , "Tree Sprayer," , "22.00"},
             {"CP," , "Cider Press," , "30.00"},
             {"PR," , "Pruner," , "12.00"},
             {"GE," , "Gas Edger," , "20.00"},
             {"RO," , "Roller," , "8.00"}
        };
        Item = _Item;

【讨论】:

    【解决方案3】:

    你可以像这样全局声明一个多维数组:

    String [][] 2DArray;
    

    然后在main方法中同样初始化如下:

     2DArray = new String[][] {
                    {"array_element_0", "array_element_1"},
                    {"array_element_2", "array_element_3"},
                    ...
                };
    

    【讨论】:

      【解决方案4】:

      您有两个选择: 在声明中

      private static String[][] item = {...};

      在其他地方使用 new 关键字 private static String[][] item = new String[][]{...}

      另外,您需要将public proj 更改为public class

      【讨论】:

        【解决方案5】:

        我不能 100% 确定我是否正确理解了您的意思,但您可以通过完全限定静态类成员来引用它。

        public class MyClass {
          // static class member
          public static String myStaticArray;
        
          // non-static class method
          public void myMethod() {
            MyClass.myStaticArray = {...}; // do stuff
          }
        }
        

        【讨论】:

          猜你喜欢
          • 2014-10-09
          • 2011-11-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-01-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多