![剑指Java:核心原理与应用实践](https://wfqqreader-1252317822.image.myqcloud.com/cover/443/47500443/b_47500443.jpg)
2.2.3 几个初学者易犯的错误
如果你是第一次接触编程,那么开始时难免会错漏百出、磕磕绊绊。下面我们列举一些初学者容易犯的错误,看看是否有你遇到过的问题。
在讲解错误之前,我们想给大家一个温馨提示,这往往是初学者特别容易忽视的一个操作,那就是“保存”,只要修改了代码,那么一定要记得“保存”,然后输入“javac”重新进行编译,否则新修改的代码得不到体现,切记切记!
问题1:当你输入javac编译命令之后,提示“找不到文件:×××.java”,如图2-32所示。
![](https://epubservercos.yuewen.com/BBFB00/26895744002143606/epubprivate/OEBPS/Images/txt002_39.jpg?sign=1739695110-UeDNgbDvL2IeI1ZTkUWZZFCuTBCb2suv-0-28569db32ef0ee8f54c377cb9b6a233f)
图2-32 找不到文件:HelloWorld.java
原因:
● 路径错误。这个文件确定是在命令行的当前路径下吗?例如,HelloWorld.java文件在D:\atguigu\ JavaSE\code\chapter02目录下,但是当前命令行在D:\atguigu\JavaSE\code目录下,所以路径是错误的。
● 文件名错误。大家要拿出“找不同”的游戏技能好好对比一下文件名。
● 文件后缀名(又称为文件扩展名)错误。正确的Java源文件的文件后缀名是.java,还有一种可能是你隐藏了(不显示)文件后缀名,虽然看起来你的文件后缀名是.java,但其实它隐藏了.txt,所以一定不要隐藏文件后缀名,图2-33就隐藏了文件后缀名,现在的HelloWorld.java其实是HelloWorld.java.txt的文本文档,而不是Java文件。
![](https://epubservercos.yuewen.com/BBFB00/26895744002143606/epubprivate/OEBPS/Images/txt002_40.jpg?sign=1739695110-LufXK6Lj9DdkTckiyL5bm3vagjRJpePO-0-59fe7901c752e509e789e853dcd81bdb)
图2-33 隐藏(不显示)文件后缀名
问题2:当你输入javac编译命令之后,提示“错误:需要class,interface或enum”,如图2-34所示。
原因:不小心把public或class单词写错了,或者大小写形式写错了,注意Java是严格区分大小写的。
问题3:当你输入javac编译命令之后,提示“错误:找不到符号”,如图2-35所示。
![](https://epubservercos.yuewen.com/BBFB00/26895744002143606/epubprivate/OEBPS/Images/txt002_41.jpg?sign=1739695110-5FyhSwEOGDi6Iplzi5bGCpm39HGOxhlX-0-1a302ea119db7f48805b64505b9f6682)
图2-34 错误:需要class,interface或enum
![](https://epubservercos.yuewen.com/BBFB00/26895744002143606/epubprivate/OEBPS/Images/txt002_42.jpg?sign=1739695110-nWBfRCuRYYn5FFxkWorXYDZdqCRNWpls-0-2f0d0d32f9a0ddac7039dc0ce7e31bf7)
图2-35 错误:找不到符号
原因:单词写错了,像String、System等单词是首字母大写的,再次强调Java是严格区分大小写的。
问题4:当你输入javac编译命令之后,提示“错误:非法字符:×××”,如图2-36所示。
![](https://epubservercos.yuewen.com/BBFB00/26895744002143606/epubprivate/OEBPS/Images/txt002_43.jpg?sign=1739695110-7eulwPrfajnoBduvUMimiRy2zaMqpxgs-0-e1845e56117e3f2729e275e31a0eb452)
图2-36 错误:非法字符:×××
原因:标点符号不是在英文半角形式下输入的,你可能输入了中文全角形式的标点符号。提醒大家,Java中的所有标点符号,包括大括号、中括号、小括号、分号、双引号、单引号、加号等,都必须在英文半角形式下输入。错误和正确的输入法状态图如图2-37所示。在计算机的世界里,英文状态的标点符号和中文状态的标点符号,全角标点符号和半角标点符号是用不同的字符表示的。初学者特别容易犯单词拼写和标点符号的错误。因为初学者一开始还不适应这么严谨的语法要求,它和平时的聊天内容是很不一样的。
问题5:当你输入javac编译命令之后,提示“错误:需要’;’”,如图2-38所示。
![](https://epubservercos.yuewen.com/BBFB00/26895744002143606/epubprivate/OEBPS/Images/txt002_44.jpg?sign=1739695110-DDykNtB6tyn1OYfdlXgf5fqlACdPbbyX-0-8b5e57780de04c359dcf117a33058a12)
图2-37 错误和正确的输入法状态图
![](https://epubservercos.yuewen.com/BBFB00/26895744002143606/epubprivate/OEBPS/Images/txt002_45.jpg?sign=1739695110-fSCZwmxtGu36l2V08Y0f0HSbiaTvLqHO-0-b0bd70273c9c1967f79fdc78bcfbdab6)
图2-38 错误:需要’;’
原因:Java中的一个语句结束了,需要用分号结尾。System.out.println是Java的一个输出语句,它的最后需要用分号结尾。这里System中的S要大写,并且println后面的小括号中不能缺内容,小括号中的内容就表示要在命令行控制台中输出的内容。
问题6:当你输入javac编译命令之后,提示“错误:解析时已到达文件结尾”,如图2-39所示。
![](https://epubservercos.yuewen.com/BBFB00/26895744002143606/epubprivate/OEBPS/Images/txt002_46.jpg?sign=1739695110-B6HJaNkAZiyz6VQEA4R0XGoWUl5nlVkL-0-a26b2bf1ffa919f170086de0a6613b76)
图2-39 错误:解析时已到达文件结尾
原因:缺少右大括号,Java中的大括号必须是成对的,而且要括对位置。大家可以仔细查看一下Java的类和方法都是由大括号括起来的完整结构。在编写代码时,注意缩进格式可以降低这种错误出现的频率,也方便查找这种错误。正确的代码结构示意图如图2-40所示。
![](https://epubservercos.yuewen.com/BBFB00/26895744002143606/epubprivate/OEBPS/Images/txt002_47.jpg?sign=1739695110-U1clG8jQOg4wbocoduhnCA68hg4PCTzc-0-c310f3c7c8f1f8028ce2992402d46e8c)
图2-40 正确的代码结构示意图
问题7:当你输入javac编译命令之后,系统提示“错误:类××是公共的,应在名为××.java的文件中声明”,如图2-41所示。
![](https://epubservercos.yuewen.com/BBFB00/26895744002143606/epubprivate/OEBPS/Images/txt002_48.jpg?sign=1739695110-08XEJirY9upJZrxpgwTrz2clk0kdzlRW-0-dc01bfbff673cfd824af4f93e97c4040)
图2-41 错误:类××是公共的,应在名为××.java的文件中声明
原因:如果你在class前面写了public,那么class后面的类名与.java文件的文件名必须一致,包括大小写形式。关于public的详细使用说明,在第7章会进行讲解。
问题8:当你输入了javac编译命令后,提示“错误:需要<标识符>”,如图2-42所示。
![](https://epubservercos.yuewen.com/BBFB00/26895744002143606/epubprivate/OEBPS/Images/txt002_49.jpg?sign=1739695110-c13nR4ztWEiG9VqnePDti0BhB6Ovw5Qv-0-6c3d4c3f61c81cfee59dc776e644008b)
图2-42 错误:需要<标识符>
原因:你把语句写到了main方法的外面。Java代码的结构必须是如下所示格式。
![](https://epubservercos.yuewen.com/BBFB00/26895744002143606/epubprivate/OEBPS/Images/txt002_50.jpg?sign=1739695110-npVGO8oEOCJpBVldHwtIDLPqb8x7AirP-0-00da6cc589f54dbce753bae686b42265)
问题9:当你的编译没报错,但是在运行时提示“错误:在类HeeloWorld中找不到main方法”,如图2-43所示。
![](https://epubservercos.yuewen.com/BBFB00/26895744002143606/epubprivate/OEBPS/Images/txt002_51.jpg?sign=1739695110-kzRgcyBtX7vCj1HPvUaDDZpvL3LKS0CU-0-2946f5e5d35e7ace08f8ab5092bc1c71)
图2-43 错误:在类HelloWorld中找不到main方法
原因:main方法写错了或没写,main的规范格式必须是如下格式。
![](https://epubservercos.yuewen.com/BBFB00/26895744002143606/epubprivate/OEBPS/Images/txt002_52.jpg?sign=1739695110-UY6vWvvXDB97fjLZhe25adLJKmUS3wb2-0-2dd690b2b62bf44466089f72cfc98cc5)
问题10:当你的编译没报错,但是在运行时提示“错误:找不到或无法加载主类×××”,如图2-44所示。
![](https://epubservercos.yuewen.com/BBFB00/26895744002143606/epubprivate/OEBPS/Images/txt002_53.jpg?sign=1739695110-vd66lP61BXn0FgIgn03vlrCfLquRtPmT-0-6909f5d120b169502207f8911fc1222f)
图2-44 错误:找不到或无法加载主类×××
原因:java命令后面的类名写错了,java命令的正确格式如下所示。
![](https://epubservercos.yuewen.com/BBFB00/26895744002143606/epubprivate/OEBPS/Images/txt002_54.jpg?sign=1739695110-7c3117l1JD0iTM94uy1pY2xFBK5CwiQj-0-847763aee7bbaaab153682c49c5cdafd)
类名就是class后面的单词,也是编译后.class文件的文件名。我们在java命令后面写类名时,不用加文件后缀名,但必须把类名写对。
以上几个问题几乎涵盖了所有初学者容易犯的错误。也许有些初学者会觉得这也太难了,这么多“坑”在等着我,但其实只要你稍微细心和耐心一点,再反复练习几次,这些错误很快你就不会再犯了。