加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

需要协助编译基本java程序的错误

发布时间:2020-12-15 04:55:30 所属栏目:Java 来源:网络整理
导读:我是 Java的新手.我在编译基本的java程序时遇到了问题,我正在努力理解为什么. (注意代码中的TextIO类用于我正在研究的书中以简化IO过程,我不相信这就是问题所在)这是我的代码: public class ProcessSales { public static void main(String[] args) { Strin
我是 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.2fn",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 datan",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.2fn",Double(tmp.trim()));
                                             ^
2 errors

我已将ln声明为String对象.对于String对象,subString方法直接在java api之外.我不明白为什么我找不到符号编译错误,特别是如果它列出方法签名和位于错误下方的位置.

我将这些问题标记为homework,因为我正在编写一本教科书,我希望了解这个问题,而不是一个扁平的解决方案.然而,这是自学,而不是任何实际课程的一部分(现在).

解决方法

关于Java编译器的好处是,它为您提供了很多信息,可用于确定代码中存在问题的位置.对你来说,第一个问题在这里:

tmp = ln.subString(i + 1);

在这种情况下,你将一封你不应该拥有的字母大写.它应该是:

tmp = ln.substring(i + 1);

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

System.out.printf("%8.2fn",Double(tmp.trim()));

应该

System.out.printf("%8.2fn",new Double(tmp.trim()));

如果这不是您的第一个编程语言,那么我建议使用像Eclipse这样的IDE,因为它会为您提供自动完成和语法检查.这是一个很好的工具,可以快速学习该语言的API.但是,如果Java是你的第一种编程语言,那么请继续进行,而不要用手握住,因为这些困难将会更快地巩固经验教训.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读