开发Java软件时会遇到很多类型的错误,但是大多数错误是可以避免的。编写代码时,有些错误是次要的失误,但这是很容易纠正的。如果您具有诸如Stackify Retrace之类的错误监视工具,则可以轻松编写代码。
在本文中,您将会找到:
继续阅读以了解最常见的问题及其解决方法。
通过编译器运行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)。
当字符串文字结尾不带引号时,将创建“未封闭的字符串文字”错误消息,并且该消息将与错误显示在同一行。(@DreamInCode)文字是值的源代码。
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软件错误消息的讨论。(@Quora)
发生“表达式的非法开头”错误的原因有很多,原因很多。它最终成为帮助较少的错误消息之一。一些开发人员说,这是由错误的代码引起的。
通常,创建表达式以产生新值或将值分配给变量。编译器期望找到一个表达式,但找不到该表达式,因为语法不符合期望。(@StackOverflow)在这些语句中可以找到错误。
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
}
浏览有关如何解决“表达式的非法开头”错误的讨论。(@StackOverflow)
这是一个非常常见的问题,因为Java中的所有标识符都必须在使用前声明。在编译代码时,编译器无法理解标识符的含义。
您可能会收到“找不到符号”消息的原因有很多:
阅读有关“找不到符号”错误的详尽讨论,以及几个创建相同问题的代码示例。(@StackOverflow)
当类XXX和Java程序文件名不匹配时,会出现“公共类XXX应该在文件中”消息。仅当类和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);
}
}
要解决此问题:
请参见“公共类XXX应该在文件中”错误的示例。(@堆栈溢出)
“不兼容的类型”是逻辑上的错误,当赋值语句试图将变量与类型的表达式配对时就会发生。当代码尝试将文本字符串放入整数时,通常会发生这种情况,反之亦然。这不是Java语法错误。(@StackOverflow)
test.java:78: error: incompatible types
return stringBuilder.toString();
^
required: int
found: String
1 error
当编译器给出“不兼容类型”消息时,确实没有一个简单的解决方法:
查看一个示例,该示例说明如何尝试将字符串分配给整数,从而创建了“不兼容的类型”。 (@StackOverflow)
此Java软件错误消息表示未在方法签名中明确声明方法的返回类型。
public class Circle
{
private double radius;
public CircleR(double r)
{
radius = r;
}
public diameter()
{
double d = radius * 2;
return d;
}
}
有几种方法可以触发“无效的方法声明”。返回类型为必填”错误:
跟随一个示例,说明构造函数命名是如何触发“无效的方法声明;返回类型为必填项”的问题。(@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)
当方法没有返回语句时,将出现“丢失的返回语句”消息。每个返回值(非空类型)的方法都必须具有一个从字面上返回该值的语句,以便可以在方法外部调用它。
public String[] OpenFile() throws IOException {
Map 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”消息的原因有两个:
查看有关如何解决“ missing return statement” Java软件错误的示例。(@StackOverflow)
当分配给变量的信息超过了它可以容纳的范围时,就会发生“可能的精度损失”。如果发生这种情况,碎片将被扔掉。如果这很好,则代码需要将变量显式声明为新类型。
在以下情况下通常会发生“可能的精度损失”错误:
这在Java的基本数据类型说明显示数据是如何表征。(@甲骨文)
未完待续。。。。。。。。。。。。
页面更新:2024-04-16
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号