原文:50 Common Java Errors and How to Avoid Them (Part 1)
作者:Angela Stringfellow
翻译:雁惊寒
译者注:本文介绍了20个常见的Java编译器错误,每种错误都包含了代码片段、问题说明,并给出了相关的链接来帮助你快速地理解并解决这些问题。以下是译文。
在开发Java软件的时候可能会遇到很多类型的错误,但大多数可以避免。我们精心挑选了20个最常见的Java软件错误,包含了代码示例和教程,以帮助你解决一些常见的编码问题。
要获得更多编写Java程序的提示和技巧,你可以下载我们的“Comprehensive Java Developer’s Guide”这本书,它里面包含了所有你需要的东西,从各类工具到最佳网站和博客、YouTube频道、Twitter影响者、LinkedIn组、播客、must-attend events等等。
如果你正在使用.NET,你应该阅读我们的50个最常见的.NET软件错误指南,以避免出现这些错误。但是如果你当前遇到的挑战是与Java相关的,那么请阅读下面的文章以了解最常见的问题及其解决方法。
编译器错误
在编译器运行Java代码的时候会创建编译器错误消息。有一点很重要,编译器可能会因为一个错误抛出多个错误消息。所以修复一个错误,然后重新编译,这样可以解决很多问题。
1. “… Expected”
当代码中缺少某些东西时,会产生这个错误。通常这是因为缺少一个分号或右括号。
private static double volume(String solidom, double alturam, double areaBasem, double raiom) {
double vol;
if (solidom.equalsIgnoreCase("esfera"){
vol=(4.0/3)*Math.pi*Math.pow(raiom,3);
}
else {
if (solidom.equalsIgnoreCase("cilindro") {
vol=Math.pi*Math.pow(raiom,2)*alturam;
}
else {
vol=(1.0/3)*Math.pi*Math.pow(raiom,2)*alturam;
}
}
return vol;
}
通常,这种错误消息不会指出产生问题的确切位置。要找出问题所在,需要:
- 确保所有的左括号都有相应的右括号。
- 查看错误所指示的那一行前面的代码。这个错误通常是在后面的代码中才会被编译器发现。
- 有的时候,有些字符(例如左括号)不应该位于Java代码的第一个。
实例:一个丢失的圆括号引发的错误。
2. “Unclosed String Literal”
当字符串结尾缺少引号时,会产生“unclosed string literal”错误消息,并且该消息就显示在出错的那一行上。
public abstract class NFLPlayersReference {
private static Runningback[] nflplayersreference;
private static Quarterback[] players;
private static WideReceiver[] nflplayers;
public static void main(String args[]){
Runningback r = new Runningback("Thomlinsion");
Quarterback q = new Quarterback("Tom Brady");
WideReceiver w = new WideReceiver("Steve Smith");
NFLPlayersReference[] NFLPlayersReference;
Run();// {
NFLPlayersReference = new NFLPlayersReference [3];
nflplayersreference[0] = r;
players[1] = q;
nflplayers[2] = w;
for ( int i = 0; i < nflplayersreference.length; i++ ) {
System.out.println("My name is " + " nflplayersreference[i].getName());
nflplayersreference[i].run();
nflplayersreference[i].run();
nflplayersreference[i].run();
System.out.println("NFL offensive threats have great running abilities!");
}
}
private static void Run() {
System.out.println("Not yet implemented");
}
}
通常,这种错误在以下这些情况下会产生:
- 字符串不是以引号结尾。这很容易修改,用指定的引号来结束字符串即可。
- 字符串超出一行。长字符串可以分成多个短串,并用加号(“+”)连接。
- 作为字符串一部分的引号没有使用反斜杠(“\”)来进行转义。
请阅读这篇文章:未封闭的字符串错误消息。
3. “Illegal Start of an Expression”
出现“Illegal Start of an Expression”错误的原因有很多。它已经成为不太有用的错误消息之一。一些开发者认为这是由坏的代码味道造成的。
通常,创建一个表达式是为了生成一个新值或给其他变量赋值。编译器期望找到一个表达式,但