当Java软件代码通过编译器运行时,会创建编译器错误消息。谨记编译器可能会针对一个错误抛出许多错误消息。所以得修复第一个错误并重新编译。这样做可以解决很多问题。
当代码中缺少某些东西时,会发生此错误。通常是因为缺少分号或右括号。
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;
}
通常,此错误消息不会精确确定问题的确切位置。为了找到错误:
点击查看关于错误的圆括号会如何导致错误(@StackOverflow)的示例。
如果字符串文字结束时没有引号的话,会创建“Unclosed String Literal”的错误消息,并且消息将显示在与错误相同的行上。(@DreamInCode)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");
}
}
通常。这种情况发生在:
点击阅读关于Java软件错误消息Unclosed String Literal的讨论。(@Quora)
出现“Illegal Start of an Expression”错误的原因有很多。因此名列不太有用的错误消息之一。有些开发者甚至认为这是由坏的代码造成的。
通常,创建表达式是为了生成新的值或为变量分配值。编译器期望找到表达式,但因为语法不符合预期而找不到表达式。(@StackOverflow)在这些语句中就可以发现此错误。
} // ADD IT HERE
public void newShape(String shape) { switch (shape) { case "Line":
Shape line = new Line(startX, startY, endX, endY);
shapes.add(line); break; case "Oval":
Shape oval = new Oval(startX, startY, endX, endY);
shapes.add(oval); break; case "Rectangle":
Shape rectangle = new Rectangle(startX, startY, endX, endY);
shapes.add(rectangle); break; default:
System.out.println("ERROR. Check logic.");
}
}
} // REMOVE IT FROM HERE
}
点击浏览关于如何排除“Illegal Start of an Expression”错误的讨论。(@StackOverflow)
这是一个非常常见的问题,因为Java中的所有标识符都需要在被使用之前进行声明。 发生错误的原因在于编译代码时,编译器不明白标识符的含义。可能收到“Cannot Find Symbol”信息的原因有很多:
点击阅读有关“Cannot Find Symbol”错误的详细讨论以及产生此问题的代码示例。(@StackOverflow)
当XXX类和Java程序文件名不匹配时,会发生“Public Class XXX Should Be in File”消息。只有当类和Java文件相同时,代码才会被编译。(@coderanch):
package javaapplication3;
public class Robot {
int xlocation;
int ylocation;
String name;
static int ccount = 0;
public Robot(int xxlocation, int yylocation, String nname) {
xlocation = xxlocation;
ylocation = yylocation;
name = nname;
ccount++;
}
} public class JavaApplication1 {
public static void main(String[] args) {
robot firstRobot = new Robot(34,51,"yossi");
System.out.println("numebr of robots is now " + Robot.ccount);
}
}
为解决这个问题:
点击查阅“Public Class XXX Should Be in File”错误的示例。(@StackOverflow)
“Incompatible Types”是指定语句尝试将变量与类型表达式配对时发生的逻辑错误。 通常会在代码尝试将文本字符串放入到整型中时出现,反之亦然。这并非Java语法错误。(@StackOverflow)
test.java:78: error: incompatible typesreturn stringBuilder.toString();
^required: int
found: String1 error
当编译器给出“Incompatible Types”消息时,就不是简单修复可以摆平的了:
查看此例子,里面说明了如何试着将一个字符串分配给一个整数,出现“Incompatible Types”消息。(@StackOverflow)
此Java软件错误消息表示方法签名中未明确声明方法的返回类型。
public class Circle{ private double radius; public CircleR(double r)
{
radius = r;
} public diameter()
{ double d = radius * 2; return d;
}
}
有若干途径会触发“Invalid Method Declaration; Return Type Required” 错误:
查看此说明构造函数命名如何触发“Invalid Method Declaration; Return Type Required” 问题的例子。(@StackOverflow)
此Java软件错误消息是比较有用的错误消息之一。 它解阐明了方法签名正在调用错误的参数。
RandomNumbers.java:9: error: method generateNumbers in class RandomNumbers cannot be applied to given types;generateNumbers();
required: int[]
found:generateNumbers();
reason: actual and formal argument lists differ in length
调用的方法期待方法声明中定义的某些参数。检查方法声明并仔细调用,以确保它们是兼容的。
查看此讨论,里面说明了Java软件错误消息如何识别在方法声明和方法调用中由参数创建的不兼容性。(@StackOverflow)
当一个方法没有返回语句时,就会出现“Missing Return Statement”的消息。每个返回值(非void类型)的方法都必须有一个字面上返回该值的语句,以便在方法之外调用它。
public String[] OpenFile() throws IOException { Map<String, Double> map = new HashMap();
FileReader fr = new FileReader("money.txt");
BufferedReader br = new BufferedReader(fr); try{ while (br.ready()){ String str = br.readLine(); String[] list = str.split(" ");
System.out.println(list);
}
} catch (IOException e){
System.err.println("Error - IOException!");
}
}
编译器抛出“Missing Return Statement”消息的原因有若干:
(@StackOverflow)
当更多的信息被分配给一个变量而超过它的容量,就会发生“Possible Loss of Precision”消息。如果出现这种情况,那么碎片就会被扔掉。 如果这样没有关系,那么代码需要将变量显式声明为新的类型。
Possible Loss of Precision”错误通常发生在:
(@Oracle)