2012-04-15 151 views
0

我想编译我的NameRecord.java文件,但我不断收到以下错误:找不到符号num = input.nextLine();这是说扫描仪输入是问题,但我在调用NameRecord类之前初始化并填充扫描仪输入。在Java中使两个类一起工作

这两个类都在同一个目录下,所以我不确定我在做什么错。

这是调用NameRecord类的类。它不编译我一直没有找到一个符号方法NameRecord(字符串):

我忽略了一些方法,也包括在这个类中以节省空间。

+0

你在哪里为num = input.nextLine()定义了“input”? ? – 2012-04-15 15:18:10

+1

由于您的NameRecord类以多种方式被破解,因此您已经得到的不仅仅是编译问题。 NameRecord类根本不应该包含任何用户接口代码,并且这个类中不应该有静态变量,否则这个类的所有对象都将毫无价值,因为所有对象都会保存相同的信息。你应该重新开始,并使其成为一个真正的OOP类,包含实例变量,getter,setter等...所有的用户界面代码应该在GUI中,而不是NameRecord类。 – 2012-04-15 15:18:16

+0

您必须将'Scanner'传递给'NameRecord'类(一个坏主意),或者您应该在调用'NameRecord'并传递您读入的字符串之前阅读'Scanner'。 – twain249 2012-04-15 15:34:25

回答

1

防止编译的问题是NameRecord类无法知道input。这是scope的问题。您的代码“知道”input的唯一位置在的main方法中的try-catch块内。您应该将input.nextLine()返回的String传递给NameRecord,以便按照您希望的方式工作。

这就是说,这是您的代码约20个问题之一。

+0

虽然您的建议在技术上是正确的,我们不应该鼓励糟糕的节目设计。所以请改变你的答案,并且不要鼓励他在NameRecord类中使用Scanner。这意味着他不应该传入任何扫描器参数。 – 2012-04-15 15:39:37

+0

我分别构建这些类以测试功能,然后尝试使它们一起工作。我如何让一个班级看到另一个班级? – 2012-04-15 15:56:35