在Java中为数组赋值?

时间:2011-01-18 19:50:07

标签: java arrays

我目前正在编写文本编辑器。我有一个完整的GUI工作,现在我正在尝试增加它的可用性。

出于某种原因,当我尝试创建一个名为symbols的数组时,NetBeans很好用 - 当我尝试为数组赋值时,NetBeans不会编译我的程序,而是会出错并且建议它为数组创建一个新类。

示例代码:

String[] symbols = new String[42]; symbols[0] = "∑"; // Error line!

这是一张图片:http://img401.imageshack.us/img401/4844/examplegx.png

有没有人知道修复此问题的解决方案或是否发生了这种情况?如果我需要提供更多细节,请告诉我。

2 个答案:

答案 0 :(得分:8)

您试图直接在类声明中放置一个任意语句,而不是在方法,构造函数或初始化程序块中。你不能这样做。

一些选项:

  • 在构造函数中执行:

    public GUI()
    {
        symbols[0] = "∑";
    }
    
  • 在初始化程序块中执行:

    String[] symbols = new String[42]; 
    {
        symbols[0] = "∑";
    }
    
  • 在初始化程序调用的方法中执行:

    String[] symbols = getDefaultSymbols();
    
    private static String[] getDefaultSymbols()
    {
        String[] ret = new String[42];
        ret[0] = "∑";
        return ret;
    }
    
  • 使用数组初始值设定项:

    String[] symbols = { "∑", null, null, null, ... };
    

请注意,您的问题就像Netbeans应该受到指责一样。它不是Netbeans - 它是Java语言规则。您的代码在Eclipse,javac,IntelliJ等下无效。

答案 1 :(得分:3)

您不能将代码放在方法或初始化程序块之外。你能做的是;

String[] symbols = new String[42]; { symbols[0] = "∑"; }

您也可以这样定义符号

String[] symbols = "∑,+,-,/,*,^".split(",");