java - 需要有关基本 Java 程序编译错误的帮助

标签 java

我是 Java 的新手。我在编译基本 Java 程序时遇到问题,我想了解原因。 (请注意,代码中的 TextIO 类在我正在学习的书中用于简化 IO 过程,我不认为这是问题所在)这是我的代码:

public class ProcessSales {
    public static void main(String[] args) {

        String      ln;
        String      tmp;
        int         i;
        int         noval;

        TextIO.readFile("sales.dat");

        while (TextIO.eof() == false){
            ln = TextIO.getln();
            for (i = 0; i < ln.length(); i++) {
                if (ln.charAt(i) == ':'){
                    tmp = ln.subString(i + 1);  
                }   
            } // end line for loop

            try {
                System.out.printf("%8.2f\n", Double(tmp.trim()));
            }
            catch (NumberFormatException e) {
                noval++;
            }
        } // end of file while loop

        System.out.printf("\nThere were a total of %d cities that didnt have data\n", noval); 

    } // end of main subroutine
} // end of ProcessSales class

我得到的编译错误如下:

[seldon@PrimeRadiant Exercises]$ javac ProcessSales.java
ProcessSales.java:15: cannot find symbol
symbol  : method subString(int)
location: class java.lang.String
                    tmp = ln.subString(i + 1);  
                            ^
ProcessSales.java:20: cannot find symbol
symbol  : method Double(java.lang.String)
location: class ProcessSales
                System.out.printf("%8.2f\n", Double(tmp.trim()));
                                             ^
2 errors

我已将 ln 声明为 String 对象。 subString 方法直接来自 java api对于 String 对象。我不明白为什么会出现 cannot find symbol 编译错误,尤其是当它在错误下方列出方法签名和位置时。

我将问题标记为 ,因为我正在研究一本教科书,我希望了解这个问题,而不是一个简单的解决方案。然而,这是自学,而不是任何实际类(class)的一部分(现在)。

最佳答案

Java 编译器的伟大之处在于,它为您提供了大量信息,可用于确定代码中存在问题的位置。对你来说,第一个问题是:

tmp = ln.subString(i + 1);

在这种情况下,您将不应该的字母大写。应该是:

tmp = ln.substring(i + 1);

每当您看到编译器输出说“找不到符号”时,这是因为 Java 编译器找不到与输出名称匹配的方法,这可能是由于语法错误或缺少依赖项。对于第二个问题,您没有发布适当的代码,但从错误消息中我可以看出您缺少 new 关键字。

System.out.printf("%8.2f\n", Double(tmp.trim()));

应该是

System.out.printf("%8.2f\n", new Double(tmp.trim()));

如果这不是您的第一门编程语言,那么我建议您使用像 Eclipse 这样的 IDE,因为它会为您提供自动完成和语法检查功能。它是快速学习该语言 API 的绝佳工具。但是,如果 Java 是您的第一门编程语言,请不要亲自动手继续学习,因为重重的敲击会更快地巩固所学的经验教训。

关于java - 需要有关基本 Java 程序编译错误的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7034181/

相关文章:

java - 为什么泛型中未指定的类型会破坏非泛型方法的类型安全

Java - 阶乘基数转换

java - 从 Java DOM 中的 XML 获取元素名称

java - GPS 位置追踪

java - 内存不足 : Java Heap Size Error on a project forked from GitHub

java - 耶拿 - 对元素进行排序

java - 使用 Arraylist 实现邻接列表

java - Splunk Java 与 JUnit 的集成

java - 是否可以有非字典顺序

java - GetResourceAsStream 返回 null,文件存在