【发布时间】:2014-12-02 19:24:37
【问题描述】:
我遇到了一个奇怪的编译问题,我什至不知道它是编译、链接还是语法问题还是什么。抱歉说得含糊不清,但我什至都在努力诊断这个问题。
解释一下:我正在编写一个相当大的 Java 程序——无论如何,对我来说。在我的代码中,我设置了一个“小部件”对象数组。小部件被定义为“widget.java”文件;创建和填充小部件数组的代码位于另一个文件中。在我发布任何内容之前试图弄清楚这一点,我剥离了我的代码并编写了一个小玩具版本,如下所示:
import java.io.*;
import java.lang.String;
import java.lang.NullPointerException;
public class arrayObjTest {
public static void main(String[] args) throws IOException {
widget yellow = new widget("Yellow");
widget[] myWidgets = new widget[3];
myWidgets[0] = new widget("Blue");
myWidgets[1] = new widget("Red");
myWidgets[2] = yellow;
}
}
class widget {
String color;
public widget(String a) {
color = a;
}
}
玩具版(上图)编译得很好。但是当我只导入这个时......
129 widget[] myWidgets = new widget[3];
130
131 myWidgets[0] = new widget("Blue");
...进入我的大代码,我得到这些编译错误:
C:\Users\Pete\Desktop\Java Playground\widgetSim>
C:\Users\Pete\Desktop\Java Playground\widgetSim>
C:\Users\Pete\Desktop\Java Playground\widgetSim>"C:\Program Files\Java\jdk1.8.0_20\bin\javac.exe" widgetMachine.java
.\widgetObject.java:131: error: ']' expected
myWidgets[0] = new widget("Blue");
^
.\widgetObject.java:131: error: ';' expected
myWidgets[0] = new widget("Blue");
^
.\widgetObject.java:131: error: illegal start of type
myWidgets[0] = new widget("Blue");
^
.\widgetObject.java:131: error: <identifier> expected
myWidgets[0] = new widget("Blue");
^
.\widgetObject.java:131: error: ';' expected
myWidgets[0] = new widget("Blue");
^
.\widgetObject.java:131: error: illegal start of type
myWidgets[0] = new widget("Blue");
^
.\widgetObject.java:131: error: <identifier> expected
myWidgets[0] = new widget("Blue");
^
.\widgetObject.java:131: error: ';' expected
myWidgets[0] = new widget("Blue");
^
.\widgetObject.java:131: error: cannot find symbol
myWidgets[0] = new widget("Blue");
^
symbol: class myWidgets
location: class widgetObject
9 errors
C:\Users\Pete\Desktop\Java Playground\widgetSim>
C:\Users\Pete\Desktop\Java Playground\widgetSim>
C:\Users\Pete\Desktop\Java Playground\widgetSim>
什么给了?当我在第 129 行创建一个小部件数组时,编译器没有抱怨,但是当我尝试插入一个小部件时,我得到了上述错误。我已经尝试了很多实验,但无法弄清楚我做错了什么。
我认为这不是语法错误,因为此代码适用于玩具版本。这是某种链接问题吗?创建/填充小部件数组的代码看不到“widget.java”什么的?
【问题讨论】:
-
看起来你是在方法之外编写代码,这在 Java 中是无效的。
-
嗯,所以澄清一下,上面的程序是可以工作的,而你问的是一个不工作的不同程序?大海捞针?
-
Luiggi 完全正确;我在一个方法之外写,完全没有抓住它。菜鸟失误!
标签: java arrays object compiler-errors