我正在尝试清理我的代码。以下是我到目前为止的情况:
下一堂课更新***
}
}
**ERRORS BELOW:**
----jGRASP exec: javac -g gradeSorter.java
gradeSorter.java:18: error: cannot find symbol
intNode good = new intNode();
^
symbol: class intNode
location: class gradeSorter
gradeSorter.java:18: error: cannot find symbol
intNode good = new intNode();
^
symbol: class intNode
location: class gradeSorter
2 errors
----jGRASP wedge2: exit code for process is 1.
----jGRASP: operation complete.
之前没有格式化代码,并且只是没有方法或类的单个文件。我正试图将它转移过来。该计划之前工作得很好。我不知道如何将主类中的变量调用到子类。
答案 0 :(得分:0)
首先,标准Java样式是类名称,与方法名称不同。 I.E
public class GradeSorter;
我不知道您是否正在使用try catch如何使用它。当你试图找到文件“grades.dat”时,如果它生成异常,它们就会创建和intNode对象。如果没有例外你的程序结束。
编辑:您还使用“new intNode();”创建一个intNode对象,现在这将调用您的intNode类的no-arg构造函数,该构造函数不存在,因此现在它调用默认值。做这个
public class intNode
{
public intNode()
{whatever you want when object is created}
}
答案 1 :(得分:0)
您的课程似乎不在同一个套餐中。在每个文件的顶部,您应该有一行包含信息,例如:
package mypack;
同一个包中的类可以访问彼此的公共字段和方法。 注意:如果使用javac编译代码,则在打包类时,编译命令会略有不同。阅读有关Java中的软件包的更多信息,因为这是修复错误所需要的。
新信息更新:
要从intNode访问fmt,您需要在main方法之外声明此变量,如果您仍希望在main方法中初始化fmt,它可能如下所示:
public class GradeSorter{
public static DecimalFormat fmt;
public static void main(String[] args) throws IOException {
fmt = new DecimalFormat("0.000");
(...)
现在从intNode访问fmt:
GradeSorter.fmt;
因为它是一个绑定到GradeSorter类的静态变量。所以你的String表达式就像
result += "The average of these grades is : " + GradeSorter.fmt.format(average);
result += "The standard deviation of these grades is: " + GradeSorter.fmt.format(deviation);
另外,请注意您的String方法(toString(),frequency())缺少返回语句。
关于格式化本身,有许多标准为Java代码设置(类似于方法名称编写如下:thisIsMyMethod();类编写如下:ThisIsMyClass)以及用于编写优雅和可读代码的许多标准(制表) ,支撑等。互联网(和书!)资源等待(重新)发现。 关于Java本身,您应该更多地研究字段和方法,访问修饰符,类和对象之间的差异(为什么是静态?)和一般的面向对象编程,因为您发布的代码看起来很混乱而且结构不好。