澳门新葡萄京官网注册 21

澳门新葡萄京官网注册50个常见的 Java 错误及避免方法(第一部分)

本文由码农网 –
小峰原创翻译,转载请看清文末的转载供给,款待参预我们的付费投稿安排!

在开荒Java软件时大概会高出好些个门类的荒诞,但大多数是足以制止的。为此我们罗列了肆十七个最广泛的Java编码错误,此中包涵代码示例和学科,以帮衬大家化解广大的编码问题。

澳门新葡萄京官网注册 1

在支付Java软件时或然会超出非常多品种的失实,但大大多是足以免止的。为此大家罗列了肆16个最布满的Java编码错误,在那之中饱含代码示例和科目,以协助我们解决广大的编码难点。

想要朝那上边发展依然真心风野趣的。能够找笔者要有个别java的读书录像,Q号码:3300863615,那个是免费的,希望同学找作者要的时候绝不有理所应当的态度,究竟都以自己的脑力,希望您是真的有风流倜傥颗想要学好java的心,作者也会尽所能的去援助您形成一名牌产品优品秀的程序猿。

引用最先的文章:50 Common Java Errors and How to Avoid Them (Part
1卡塔尔小编:AngelaStringfellow翻译:雁惊寒翻译注:本文介绍了贰十个左近的Java编译器错误,每个错误都带有了代码片段、难点求证,并付出了有关的链接来救助你快捷地知道并缓和这一个难点。以下是译文。在支付Java软件的时候只怕会境遇许五种类的错误,但抢先50%得以免止。大家精心接收了二十个最广泛的Java软件错误,包含了代码示例和科目,以帮扶您消除一些布满的编码难点。要拿到越来越多编辑Java程序的唤起和本领,你能够下载大家的“Comprehensive
Java Developer’s
Guide”这本书,它里面饱含了独具你须求的事物,从各个工具到顶级网址和博客、YouTube频道、推特(TWTR.USState of Qatar影响者、LinkedIn组、播客、must-attend
events等等。假诺你正在使用.NET,你应有阅读我们的50个最不乏先例的.NET软件错误指南,以制止现身那个错误。但是生龙活虎旦你眼前越过的挑衅是与Java相关的,那么请阅读下边包车型大巴文章以询问最分布的标题及其消除方式。编写翻译器错误在编写翻译器运转Java代码的时候会成立编译器错误音讯。有好几超级重大,编写翻译器恐怕会因为二个不当抛出多少个谬误音讯。所以修复四个荒唐,然后重新编写翻译,那样能够消除广大主题材料。1.
“…
Expected”
现代码中贫乏某个事物时,会爆发那个张冠李戴。常常这是因为贫乏贰个分集团或右括号。

编写翻译器错误

当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;}

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代码行此前附带看看行。此Java软件错误未有被编写翻译器注意到,直到在代码中更加深档期的顺序地查看。
  • 一时三个字符,如叁个左括号,并不该放在Java代码的本原来的地点置。所以开垦人士没有放置贰个右括号来抵消括号。

点击查看关于错误的圆括号会怎么着引致错误(@StackOverflow)的事必躬亲。

当Java软件代码通过编写翻译器运行时,会创制编写翻译器错误新闻。谨记编写翻译器可能会指向二个荒唐抛出累累乖谬音信。所以得修复第贰个谬误并再一次编写翻译。这样做能够解决大多主题材料。

日常,这种不当新闻不会提议发生难点的适度地点。要寻找难点所在,供给:确认保障全体的左括号都有相应的右括号。查看错误所提醒的那大器晚成行前边的代码。这些似是而非平常是在背后的代码中才会被编写翻译器开采。不经常,有个别字符不该放在Java代码的率先个。实例:一个废弃的圆括号抓住的不当。2.
“Unclosed String Literal”
当字符串结尾缺少引号时,会发出“unclosed
string literal”错误消息,何况该消息就呈现在一念之差的那风华正茂行上。

2.“Unclosed String Literal”

后生可畏经字符串文字甘休时不曾引号的话,会创制“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)

1.“…Expected”

 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”错误的原由有数不清。因而名列不太灵光的失实新闻之风流倜傥。有个别开辟者以致以为那是由坏的代码形成的。

平日说来,成立表明式是为了扭转新的值或为变量分配值。编写翻译器期待找到表明式,但因为语法不符合预期而找不到表明式。(@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)

今世码中缺失有个别事物时,会发生此错误。平时是因为缺乏分号或右括号。

平日,这种张冠李戴在以下那几个处境下会发出:字符串不是以引号结尾。那非常轻便修改,用钦点的引号来收尾字符串就可以。字符串超过生龙活虎行。长字符串能够分为三个短串,并用加号连接。作为字符串生龙活虎部分的引号未有利用反斜杠来开展转义。请阅读那篇小说:未密闭的字符串错误音讯。3.
“Illegal Start of an Expression”
出现“Illegal Start of an
Expression”错误的案由有数不尽。它已经改成不太实用的荒诞新闻之生龙活虎。一些开辟者认为那是由坏的代码味道变成的。平常,创造一个表明式是为着调换两个新值或给任何变量赋值。编写翻译器期待找到一个表明式,但是因为语法不符合预期而找不到表明式。在底下那个代码中得以找到这种不当。

4.“Cannot Find Symbol”

那是二个要命置之不理的标题,因为Java中的全体标志符都须要在被运用在此之前开展宣示。
产生错误的原委在于编写翻译代码时,编写翻译器不知情标志符的意思。

澳门新葡萄京官网注册 2

大概接受“Cannot Find Symbol”消息的来由有比超多:

  • 标志符表明时的拼写恐怕与在代码中利用时的拼写分歧。
  • 变量从未被声称。
  • 变量使用时与注解未在同样范围内。
  • 类未有导入。

点击阅读有关“Cannot Find
Symbol”错误的详尽批评以至产生此主题材料的代码示例。(@StackOverflow)

澳门新葡萄京官网注册 3

} // 把它添加到这里 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."); } } } // 从这里删掉它 }

5.“Public Class XXX Should Be in File”

当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)

不足为道,此错误消息不会标准显著难题的恰到好处地点。为了找到错误:

请阅读那篇作品:怎么着撤废“illegal start of an expression”错误。4.
“Cannot Find
Symbol”
那是三个不胜广泛的标题,因为Java中的全数标记符都供给在接纳在此以前开展宣示。现身那些错误是因为,在编译代码时,编写翻译器不通晓该标记符的意思。有为数不菲缘由可能会发生“cannot
find
symbol”错误消息:标志符申明时的拼写也许与代码中选取时的拼写不等同。变量从未被声称。未在一直以来作用域内表明该变量。未有导入类。请阅读这篇随笔:关于“cannot
find symbol”错误的探究。5. “Public Class XXX Should Be in
File”
当XXX类和Java程序文件名不相称时,就能够发出“public class XXX should
be in file”错误消息。 独有当类名和Java文件名相符期,手艺编写翻译代码。

6.“Incompatible Types”

“Incompatible
Types”是钦赐语句尝试将变量与品种表明式配成对时发出的逻辑错误。
经常会在代码尝试将文本字符串放入到整型中时现身,反之亦然。这并不是Java语法错误。(@StackOverflow)

test.java:78: error: incompatible types
return stringBuilder.toString();
                             ^
required: int
found:    String
1 error

当编写翻译器给出“Incompatible Types”新闻时,就不是归纳修补能够制服的了:

  • 有能够调换类型的函数。
  • 开采职员恐怕供给改造代码预期的成效。

查看此例子,里面表达了哪些试着将三个字符串分配给三个整数,现身“Incompatible
Types”音讯。(@StackOverflow)

管教全部的左括号皆有二个对应的右括号。

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); } }

7.“Invalid Method Declaration; Return Type Required”

此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”
错误:

  • 忘记注脚类型
  • 要是措施未有再次来到值,那么须求将“void”注脚为格局具名中的类型。
  • 构造函数名称不需求评释类型。
    可是,借使布局函数名称中存在错误,那么编写翻译器将会把结构函数视为未有一点名项目标艺术。

查阅此证实布局函数命名如何触发“Invalid Method Declaration; Return Type
Required”
难点的例子。(@StackOverflow)

在查看提醒的Java代码行以前附带看看行。此Java软件错误没有被编写翻译器注意到,直到在代码中更加深档次地翻看。

要解决这么些难题,可以:把类和文书命名称为同生龙活虎的名字。确定保障五个名称始终保持生龙活虎致。请阅读这篇小说:“Public
class XXX should be in file”错误的演示。6. “Incompatible
Types”
“Incompatible
Types”是赋值语句尝试对变量与表明式举办项目相配时发生的逻辑错误。经常,将字符串赋值给贰个整数时会产生这几个指鹿为马,反之亦然。那不是贰个Java语法错误。

8.“Method <X> in Class <Y> Cannot Be Applied to Given Types”

此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)

突发性叁个字符,如叁个左括号,并不应当投身Java代码的原本地点。所以开垦职员没有放置三个右括号来抵消括号。

test.java:78: error: incompatible typesreturn stringBuilder.toString(); ^required: intfound: String1 error

9.“Missing Return Statement”

当二个方法未有回到语句时,就能够自然则然“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”音讯的原故有许多:

  • 回去语句由于错误被总结。
  • 该措施未有回到任何值,但品种void在措施具名中未申明。

查看如何修复“Missing Return
Statement”Java软件错误的演示。(@StackOverflow)

点击查看关于错误的圆括号会怎么着招致错误(@StackOverflow)的示范。

当编写翻译器抛出“incompatible
types”新闻时,确实不太轻易消亡那一个主题材料:使用类型转换函数。开垦人士大概要求更改代码原有的效率。看一下以此例子:将三个字符串赋值给整数会现身“incompatible
types”错误。7. “Invalid Method Declaration; Return Type
Required”
那么些荒谬新闻的意味是,在艺术评释中未出示地宣称方法的归来类型。

10.“Possible Loss of Precision”

当越来越多的音讯被分配给一个变量而超越它的容积,就能够发生“Possible Loss of
Precision”信息。假如现身这种场合,那么零星就能被扔掉。
若是如此未有关系,那么代码须求将变量显式证明为新的体系。

澳门新葡萄京官网注册 4

“Possible Loss of Precision”错误平常爆发在:

  • 品尝为整数数据类型的变量分配二个实数。
  • 品尝为整数数据类型的变量分配三个double。

此Java中着力数据类型的批注公布了数额特征。(@Oracle)

2.“Unclosed String Literal”

public class Circle{ private double radius; public CircleR(double r) { radius = r; } public diameter() { double d = radius * 2; return d; }}

11.“Reached End of File While Parsing”

当程序缺少关闭大括号(“}”)时,Java代码中就能发生此错误消息。
一时大家能够透过在代码的尾声放置大括号来不慢修复错误。

public class mod_MyMod extends BaseMod
public String Version()
{
     return "1.2_02";
}
public void AddRecipes(CraftingManager recipes)
{
   recipes.addRecipe(new ItemStack(Item.diamond), new Object[] {
      "#", Character.valueOf('#'), Block.dirt
   });
}

上述代码将形成以下错误:

java:11: reached end of file while parsing }

编排utilities程序和相符的代码缩进能够更易于地找到那类疏漏的大括号。

此示例公布了缺少了大括号会如何创设“Reached
End of File While Parsing”的荒唐音讯。(@StackOverflow)

假诺字符串文字甘休时髦未引号的话,会创制“Unclosed String
Literal”的荒诞消息,而且消息将显示在与谬误近似的行上。(@DreamInCode)Literal是值的源代码。

有那三种状态会接触“invalid method declaration; return type
required”错误:忘记证明类型。若是艺术未有重临值,那么须求在点子表明中钦命“void”作为重临类型。结构函数无需表明类型。不过,借使构造函数名称中留存不当,那么编写翻译器会把布局函数看成是未曾点名项指标点子。看多个那个事例:构造函数的命名难点触发“invalid
method declaration; return type required“难题。8. “Method in Class
Cannot Be Applied to Given
Types”
本条错误消息相比较有用,它的情致是某些方法调用了不当的参数。

12.“Unreachable Statement”

当三个口舌写在贰个截留它推行的地点时,就能发生“Unreachable
statement”错误。平时它出今后暂停或回到语句之后。

for(;;){
   break;
   ... // unreachable statement
}
int i=1;
if(i==1)
  ...
else
  ... // dead code

何足为奇轻松地运动重临语句将修复错误。阅读有关何以修复Unreachable Statement
Java软件错误的座谈。
(@StackOverflow)

澳门新葡萄京官网注册 5

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

13.“Variable <X> Might Not Have Been Initialized”

当方法中宣示的某个变量未开始化时,就能生出这种错误。它也会出未来一向不伊始值的变量是if语句组成都部队分的情况下。

int x;
if (condition) {
    x = 5;
}
System.out.println(x); // x may not have been initialized

阅读此有关如何防止接触“Variable <X> Might Not Have Been
Initialized”错误的评论。(@reddit)

平铺直叙。这种情况发生在:

在调用方法时,应传播在其宣称时定义的这几个参数。请检查格局注解和章程的调用,以确认保障它们是相配的。这几个商量表明了办法注解和艺术调用中参数的不宽容性所形成的Java错误。9.
“Missing Return Statement”
当一个艺术缺乏return语句时,会接触“Missing
Return
Statement”错误信息。有再次来到值的章程必须要有一条回来某些值的说话,以便在措施之向外调拨运输用该值。

14.“Operator … Cannot be Applied to <X>”

当操作符用于非定义中的类型时,就能够鬼使神差此难点。

operator < cannot be applied to java.lang.Object,java.lang.Object

当Java代码尝试在估测计算中利用场目字符串时,平常会发生这种状态。
要修复的话,就需求将字符串转变为整型或浮点型。

翻阅此说明非数字类型如何促成Java软件错误从而警告操作符不或者运用于类型的例证。
(@StackOverflow)

字符串文字不以引号结尾。那十分轻便改过,加上所需的引号,闭合字符串文字即可。

public String[] OpenFile() throws IOException { MapString, 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!"); }}

15.“Inconvertible Types”

当Java代码品尝施行违规转移时,就能发出“Inconvertible Types”错误。

TypeInvocationConversionTest.java:12: inconvertible types
found   : java.util.ArrayList<java.lang.Class<? extends TypeInvocationConversionTest.Interface1>>
required: java.util.ArrayList<java.lang.Class<?>>
    lessRestrictiveClassList = (ArrayList<Class<?>>) classList;

举例说,布尔值不可能退换为整型。

阅读此有关如何在Java软件中退换不可转变的品种的商量。(@StackOverflow)

字符串文字扩展超越大器晚成行。长字符串文字能够分解成字符串文字,并加上加号(“+”)。

编写翻译器抛出“missing return
statement”新闻有那多少个原因:再次回到语句被张冠李戴地差不离了。该措施未有回去任何值,不过在措施证明中未证明类型为void。请查看怎么着消除“missing
return statement”错误那么些事例。10. “Possible Loss of
Precision”
当赋值给变量的音讯当先了该变量可以承袭的上有效期,就能够触发“Possible
Loss of
Precision”错误。意气风发旦产生这种景况,部分信息将被放任。假设那样做没难点来讲,那么在代码上应该将变量显式地声称为新的门类。以下情形日常会产生“possible
loss of
precision”错误:尝试将几个实数赋值给整型类型的变量。尝试将三个double数据赋值给整型类型的变量。Java中的基本数据类型解释了区别数据类型的特点。11.
“Reached End of File While
Parsing”
其意气风发怪诞音信日常在程序贫乏右大括号时触发。不时,在代码的末段增添右大括号能够高速地修复此错误。

16.“Missing Return Value”

当return语句满含不科学的品类时,你将接受“Missing Return
Value”的消息。举个例子,以下代码:

public class SavingsAcc2 {
    private double balance;
    private double interest;
    public SavingsAcc2() {
        balance = 0.0;
        interest = 6.17;
    }
    public SavingsAcc2(double initBalance, double interested) {
        balance = initBalance;
        interest = interested;
    }
    public SavingsAcc2 deposit(double amount) {
        balance = balance + amount;
        return;
    }
    public SavingsAcc2 withdraw(double amount) {
        balance = balance - amount;
        return;
    }
    public SavingsAcc2 addInterest(double interest) {
        balance = balance * (interest / 100) + balance;
        return;
    }
    public double getBalance() {
        return balance;
    }
}

回到以下错误:

SavingsAcc2.java:29: missing return value 
return; 
^ 
SavingsAcc2.java:35: missing return value 
return; 
^ 
SavingsAcc2.java:41: missing return value 
return; 
^ 
3 errors

经常,有三个回去语句不回来任何事物。

阅读此有关哪些制止“Missing Return
Value”Java软件错误消息的商讨。(@coderanch)

第生龙活虎部分完,敬请关怀第二有个别的原委。

用作字符串文字部分的引号不通过反斜杠(“”)进行转义。

public class mod_MyMod extends BaseModpublic String Version(){ return "1.2_02";}public void AddRecipes(CraftingManager recipes){ recipes.addRecipe(new ItemStack(Item.diamond), new Object[] { "#", Character.valueOf('#'), Block.dirt });}

点击阅读至于Java软件错误新闻Unclosed String
Literal的座谈。(@Quora)

上述代码会发出以下这一个张冠李戴:

3.“Illegal Start of an Expression”

java:11: reached end of file while parsing }

现身“Illegal Start of an
Expression”错误的原故有过多。由此名列不太灵光的荒唐新闻之蓬蓬勃勃。有些开垦者以致感到那是由坏的代码变成的。

编码工具和卓绝的代码缩进能够更易于地找到那些分化盟的大括号。请阅读这篇小说:缺乏的大括号会触发“reached
end of file while parsing”错误消息。12. “Unreachable
Statement”
当一条语句出现在七个它不大概被施行之处时,会触发“Unreachable
statement”错误。平时,是在二个break或return语句之后。

常常,创制表明式是为了转移新的值或为变量分配值。编写翻译器期待找到表达式,但因为语法不切合预期而找不到表明式。(@StackOverflow)在此些语句中就能够窥见此错误。

for(;;){ break; ... // unreachable statement}int i=1;if(i==1) ...else ... // dead code

澳门新葡萄京官网注册 6

日常性,轻松地运动return语句就可以修复此错误。请阅读那篇作品:如何修复“Unreachable
Statement”错误。13. “Variable Might Not Have Been
Initialized”
在点子中声称的片段变量若无起先化,就可以爆发这种不当。假设在if语句中富含未有开端值的变量时,就能够发出这种错误。

点击浏览有关什么消灭“Illegal Start of an
Expression”错误的座谈。(@StackOverflow)

int x;if (condition) { x = 5;}System.out.println(x); // x可能尚未初始化

4.“Cannot Find Symbol”

请阅读那篇文章:怎么着防止接触“Variable Might Not Have Been
Initialized”错误。14. “Operator … Cannot be Applied to
当操作符作用于未在其定义范围内的种类时,会冒出此主题材料。

这是一个十三分分布的难题,因为Java中的全体标记符都需求在被选择在此以前开展宣示。
发生错误的原故在于编写翻译代码时,编写翻译器不了然标记符的含义。

operator  cannot be applied to java.lang.Object,java.lang.Object

澳门新葡萄京官网注册 7

当Java代码尝试在酌量中应用字符串类型时,平常会触发这种张冠李戴。要修复那些主题材料,必要将字符串转变为整数或浮点数。请阅读那篇文章:非数字类型为啥会招致Java软件错误。15.
“Inconvertible
Types”
当Java代码尝试举行违法转移时,会产生“Inconvertible Types”错误。

唯恐收到“Cannot Find Symbol”音信的来头有众多:

TypeInvocationConversionTest.java:12: inconvertible typesfound : java.util.ArrayListjava.lang.Class? extends TypeInvocationConversionTest.Interface1required: java.util.ArrayListjava.lang.Class? lessRestrictiveClassList = (ArrayListClass?) classList;

标记符表明时的拼写大概与在代码中接收时的拼写不一样。

^举个例子,布尔类型不可能转变为整形。请阅读那篇文章:怎么样在Java软件中改革不可调换的品种。16.
“Missing Return Value”
当重回语句包蕴不得法的种类时,你会收取“Missing
Return Value”音讯。比方,查看以下代码:

变量从未被声称。

public class SavingsAcc2 { private double balance; private double interest; public SavingsAcc2() { balance = 0.0; interest = 6.17; } public SavingsAcc2(double initBalance, double interested) { balance = initBalance; interest = interested; } public SavingsAcc2 deposit(double amount) { balance = balance + amount; return; } public SavingsAcc2 withdraw(double amount) { balance = balance - amount; return; } public SavingsAcc2 addInterest(double interest) { balance = balance * (interest / 100) + balance; return; } public double getBalance() { return balance; }}

变量使用时与评释未在长期以来范围内。

归来以下错误:

类未有导入。

SavingsAcc2.java:29: missing return value return; ^ SavingsAcc2.java:35: missing return value return; ^ SavingsAcc2.java:41: missing return value return; ^ 3 errors

点击阅读有关“Cannot Find
Symbol”错误的亲力亲为座谈以致爆发此主题材料的代码示例。(@StackOverflow)

枯燥无味,这几个错误的现身是因为有某个重回语句未有回来任李良华西。请阅读那篇文章:怎样制止“Missing
Return Value”错误。17. “Cannot Return a Value From Method Whose Result
Type Is
Void”
当多个void方法尝试再次来到任何值时,会生出此Java错误,比如在偏下代码中:

5.“Public Class XXX Should Be in File”

public static void move(){ System.out.println("What do you want to do?"); Scanner scan = new Scanner(System.in); int userMove = scan.nextInt(); return userMove;}public static void usersMove(String playerName, int gesture){ int userMove = move(); if (userMove == -1) { break; }

当XXX类和Java程序文件名不相称时,会生出“Public Class XXX Should Be in
File”新闻。独有当类和Java文件意气风发律时,代码才会被编写翻译。(@coderanch):

万般,改良方法的回到类型与重临语句中的类型风姿罗曼蒂克致,能够消除那一个标题。比如,上面包车型地铁void能够改为int:

澳门新葡萄京官网注册 8

public static int move(){ System.out.println("What do you want to do?"); Scanner scan = new Scanner(System.in); int userMove = scan.nextInt(); return userMove;}

为解决那几个标题:

请阅读那篇小说:怎样修复“Cannot Return a Value From Method Whose Result
Type Is Void”错误。18. “Non-Static Variable … Cannot Be Referenced
From a Static
Context”
当编写翻译器尝试在静态方法中做客非静态变量时,会发生此错误:

类和文件命名相像。

public class StaticTest { private int count=0; public static void main(String args[]) throws IOException { count++; //compiler error: non-static variable count cannot be referenced from a static context }}

保障两名号的场合亦然。

要缓慢解决“Non-Static Variable … Cannot Be Referenced From a Static
Context”这些错误,能够做两件业务:可以将变量表明为静态。能够在静态方法中创立非静态对象的实例。请阅读这些科目:静态和非静态变量之间的分别。19.
“Non-Static Method … Cannot Be Referenced From a Static
Context”
当Java代码尝试在静态类中调用非静态方法时,会时有爆发此难点。比方,以下代码:

点击查阅“Public Class XXX Should Be in
File”错误的示范。(@StackOverflow)

class Sample{ private int age; public void setAge(int a) { age=a; } public int getAge() { return age; } public static void main(String args[]) { System.out.println("Age is:"+ getAge()); }}

6.“Incompatible Types”

会接触那几个错误:

“Incompatible
Types”是钦命语句尝试将变量与种类表明式配成对时发出的逻辑错误。
平常会在代码尝试将文本字符串放入到整型中时现身,反之亦然。那并不是Java语法错误。(@StackOverflow)

Exception in thread "main" java.lang.Error: Unresolved compilation problem: Cannot make a static reference to the non-static method getAge() from the type Sample

澳门新葡萄京官网注册 9

要在静态方法中调用非静态方法,需尽管声称二个要调用的非静态方法的类的实例。请阅读这篇小说:非静态方法和静态方法之间的界别。20.
“(array) Not Initialized”
当数组已经宣称但未起头化时,你会获取“(array卡塔尔Not
Initialized”那样的乖谬信息。数组的长短是定点的,因而各种数组都亟待以所需的长度进行起先化。以下代码是理之当然的:

当编写翻译器给出“Incompatible Types”音讯时,就不是粗略修补能够摆平的了:

AClass[] array = {object1, object2}

有能够转移类型的函数。

这么也得以:

开采人员恐怕须求更动代码预期的职能。

AClass[] array = new AClass[2];...array[0] = object1;array[1] = object2;

查看此例子,里面表达了何等试着将三个字符串分配给三个整数,现身“Incompatible
Types”新闻。(@StackOverflow)

但诸如此比是不科学的:

7.“Invalid Method Declaration; Return Type Required”

AClass[] array;...array = {object1, object2};

此Java软件错误消息表示方法签名中未鲜明宣称方法的归来类型。

请阅读那篇文章:关于如何在Java中起初化数组。未完待续前几天大家研商了编写翻译器的荒唐,下次我们将深刻座谈各样恐怕会现身的运作时至极。像本文的构造雷同,下一次也会包含代码片段、解释,以致相关的链接来救助你尽快修复代码。

澳门新葡萄京官网注册 10

有若干门路会触发“Invalid Method Declaration; Return Type Required”
错误:

忘掉表明类型

固然情势未有重临值,那么须要将“void”注明为情势具名中的类型。

布局函数名称无需评释类型。
不过,借使结构函数名称中设有张冠李戴,那么编写翻译器将会把布局函数视为未有一点名项指标秘技。

翻看此证实布局函数命名如何触发“Invalid Method Declaration; Return Type
Required”
难题的事例。(@StackOverflow)

8.“Method in Class Cannot Be Applied to Given Types”

此Java软件错误音信是相比实用的失实音信之黄金年代。
它解评释了办法签字正在调用错误的参数。

澳门新葡萄京官网注册 11

调用的艺术期望艺术表明中定义的少数参数。检查措施声明并细致调用,以保障它们是至极的。

查看此讨论,里面表达了Java软件错误新闻怎样识别在措施注脚和方法调用中由参数成立的不宽容性。(@StackOverflow)

9.“Missing Return Statement”

当贰个方法未有再次来到语句时,就相会世“Missing Return
Statement”的音信。各样再次回到值(非void类型)的法子都必需有多少个字面上重返该值的口舌,以便在章程之向外调拨运输用它。

澳门新葡萄京官网注册 12

编写翻译器抛出“Missing Return Statement”音信的因由有几多:

回来语句由于错误被回顾。

该方法未有回来任何值,但品种void在章程具名中未表明。

查看怎么着修复“Missing Return
Statement”Java软件错误的身体力行。(@StackOverflow)

10.“Possible Loss of Precision”

当越来越多的新闻被分配给二个变量而超越它的体积,就能够产生“Possible Loss of
Precision”新闻。假诺现身这种景色,那么零星就能够被扔掉。
假诺那样未有涉嫌,那么代码要求将变量显式申明为新的项目。

澳门新葡萄京官网注册 13

Possible Loss of Precision”错误平日发生在:

品味为整数数据类型的变量分配二个实数。

品味为整数数据类型的变量分配一个double。

此Java中挑番禺数据类型的解释发挥了数额特征。(@Oracle)

11.“Reached End of File While Parsing”

当程序缺点和失误关闭大括号(“}”)时,Java代码中就能够发出此错误消息。
一时我们得以经过在代码的最后放置大括号来神速修复错误。

澳门新葡萄京官网注册 14

上述代码将引致以下错误:

澳门新葡萄京官网注册 15

编辑utilities程序和方便的代码缩进能够更便于地找到那类疏漏的大括号。

此示例公布了缺少了大括号会怎样成立“Reached
End of File While Parsing”的荒诞音讯。(@StackOverflow)

12.“Unreachable Statement”

当一个言辞写在叁个梗阻它实践的地点时,就能够产生“Unreachable
statement”错误。日常它现身在暂停或回到语句之后

澳门新葡萄京官网注册 16

通常性轻巧地移动重临语句将修复错误。阅读有关哪些修复Unreachable Statement
Java软件错误的商讨。
(@StackOverflow)

13.“Variable Might Not Have Been Initialized”

当方法中宣称的有的变量未初步化时,就能发出这种指鹿为马。它也会冒出在并未伊始值的变量是if语句组成都部队分的动静下。

澳门新葡萄京官网注册 17

阅读此关于怎么样防止接触“Variable Might Not Have Been
Initialized”错误的切磋。(@reddit)

14.“Operator … Cannot be Applied to ”

当操作符用于非定义中的类型时,就能够并发此难点。

澳门新葡萄京官网注册 18

当Java代码尝试在测算中动用场目字符串时,日常会爆发这种景观。
要修复的话,就须要将字符串转变为整型或浮点型。

翻阅此表明非数字类型如何促成Java软件错误进而警示操作符不能采用于类型的例证。
(@StackOverflow)

15.“Inconvertible Types”

当Java代码品尝进行违法转移时,就能够发生“Inconvertible Types”错误。

澳门新葡萄京官网注册 19

比如说,布尔值无法转变为整型。

翻阅此有关怎么在Java软件中改变不可转换的门类的切磋。(@StackOverflow)

16.“Missing Return Value”

当return语句满含不得法的等级次序时,你将吸取“Missing Return
Value”的消息。举个例子,以下代码:

澳门新葡萄京官网注册 20

归来以下错误:

澳门新葡萄京官网注册 21

日常说来,有贰个回到语句不回来任何事物。

开卷此有关怎么幸免“Missing Return
Value”Java软件错误音信的座谈。(@coderanch)

首先有的完,敬请关切第二有的的开始和结果。

想要朝那上头升高如故真心有意思味的。能够找小编要有的java的学习录制,Q号码:3300863615,这一个是无需付费的,希望同学找笔者要的时候不要有理所应当的神态,毕竟都以自个儿的心机,希望您是真的有大器晚成颗想要学好java的心,笔者也会尽所能的去帮衬你造成一名佳绩的程序猿。

加小编Q有以下几个必要:

1、直面日前流行的本事不知从何入手,须要突破才能瓶颈的。

2、在合营社待久了,过得很过瘾,但换工作时面试碰壁。须要在长期内进修、换专门的学业拿高薪的。

3、若无工作涉世,在校博士,底子十二分扎实,对java工作体制,常用设计观念,常用java开拓框架驾驭了然的。

4、以为温馨很牛B,平日需求都能解决。不过所学的知识点未有系统化,很难在技术世界延续突破的。

  1. 群号:java互撩学习调换群 备注好音信!

6.阿里Java高档大牌直播讲明知识点,分享文化,多年办事经验的梳理和计算,带着大家精细入微学习

发表评论

电子邮件地址不会被公开。 必填项已用*标注