Java语言程序的错误类型和产生原因

2020-02-04 02:03欧阳桂秀
电子技术与软件工程 2020年20期
关键词:变量

欧阳桂秀

(武汉职业技术学院 湖北省武汉市 430074)

Java 语言是一门优秀的面向对象程序设计语言。Java 程序设计是高职计算机软件技术、网络技术和移动应用开发等专业开设的一门理论和实践想结合的课程。学生要在学懂基本语法知识的前提下,学会程序设计的基本思想,会分析问题和解决问题。教学实践中,学生常觉得Java 语言难学、难懂。其原因是多方面的,其中一个原因是不能正确理解和使用Java 语言的有关语法规定。为了提高学生的编程能力,提高学生自主学习能力和解决问题的能力,教师可以给学生展示程序常见错误,分析错误产生的原因和解决方法。

1 Java语言程序的错误类型和产生原因

1.1 Java语言程序的错误分类

Java语言程序的错误有语法错误、逻辑错误和运行错误。

(1)语法错误。没有安装语法规定进行编程产生的错误。例如变量没有声明、赋值不兼容等。

(2)逻辑错误。程序可以正常运行,但是得不到预期的结果。例如累加求和的程序for()后面多加了分号。

(3)运行错误。例如运行程序后出现数组下标越界异常等。

1.2 程序错误分析以及改正错误

因为Java 集成开发环境Eclipse 等是英文的,学生作为初学者,很难看懂英文出错信息。因此笔者用程序段来讲解学生在编程中容易出现的错误以及解决方法。

1.2.1 常见语法错误

(1)int a;

System.out.println("a = "+a);

错误信息:The local variable a may not have been initialized

中文含义:局部变量a 可能没有初始化。

关键词:variable:变量,initialize:初始化

改正错误:给变量a 赋一个初始值,类型一致(或兼容)的初始值。例如:

int a =1;

(2)float c;

c = 2.4;

错误信息:Type mismatch:cannot convert from double to float

中文含义:“类型不匹配:不能从double 型转换到float 型”

关键词:type:类型,mismatch :不匹配

改正错误:c = 2.4f;

(3)inti

错误信息:Syntax error,insert ";" to complete Statement

中文含义:语法错误,插入“;”来完成语句

改正错误:inti;

(4)System.out.println("最后输入数字0 结束输入操作");

错误信息:Syntax error on token "Invalid Character",;expected

中文含义:语法错误,无效字符,期望;

关键词:Invalid Character:无效字符

错误原因:语句末尾输入了中文的分号;

改正错误:System.out.println("最后输入数字0 结束输入操作");

(5)j=10;

错误信息:j cannot be resolved to a variable

中文含义:j 不能被解析为一个变量

关键词:resolve:解析

错误原因:没有定义变量j,或者定义的变量和使用的变量不一致。

改正错误:int j;j=10;

错误信息:The method dislay()is undefined for the type Rectangle

中文含义:类型Rectangle 中,方法dislay()未定义

关键词:method:方法。undefined:未定义。type:类型。

错误原因:方法dislay()没有定义。或者,已经定义了方法,但是定义的方法和调用的方法不一致。

在本例里,是定义的display()方法和调用的方法r.dislay()不一致,后者少了一个字母p。

改正错误:r.display();

错误出现的位置:Circle c1=new Circle();

错误信息:The constructor Circle()is undefined

中文含义:构造方法Circle()未定义

关键词:constructor:构造方法。undefined:未定义。

错误原因:在Circle 类中没有定义Circle()构造方法。

改正错误:在Circle 类中定义Circle()构造方法。

错误信息:The type Dog must implement the inherited abstract method Animal.speak()

中文含义:类型Dog 必须实现继承的抽象方法Animal.speak()

关键词:type:类型(在这里,指的是类)。implement:实现。

inherited:继承的。abstract:抽象的。method:方法

错误原因:子类继承的父类如果是抽象类,则子类必须给出父类的抽象方法的具体实现。

错误原因:类名的大小写问题,定义的类和使用的类不一致。

改正错误:public class Classroom extends Building

错误信息:The public type Cat must be defined in its own file

中文:public 类型(类)Cat 必须被定义在它自己的文件里

错误原因:在同一个*.java 文件中,有两个类用public 修饰了。

1.2.2 常见逻辑错误

例如,累加求和1+2+3+4+......+100,用for 循环语句实现。

正确的运行结果是sum=5050

但是,如果for()后面多了分号

inti,sum=0;

for(i=1;i<=100;i++);

{sum=sum+i;}

System.out.println("sum="+sum);

则运行结果是sum=101

错误原因:如果for(i=1;i<=100;i++)多了分号,那么sum=sum+i;不是循环体,而是循环结束后执行的下一条语句。当i=101 时循环结束,然后执行sum=sum+i;所以sum=0+101=101。

1.2.3 常见运行错误

声明数组、初始化数组

int f[ ]=new int[4];

for(j=0;j<=f.length;j++)

{f[j]=j;}

错误信息:ArrayIndexOutOfBoundsException

中文含义:数组下标越界异常

关键词:Array:数组。Index:下标,索引。Bound:边界。Exception:异常。

错误原因:int f[ ]=new int[4];声明和创建的数组f 有4 个元素,分别是f[0]、f[1]、f[2]、f[3]。没有f[4]这个元素。而for 循环当j=f.length,则执行循环体f[4]=4,此时出错。

改正错误:j

2 结束语

在Java 程序设计教学中,通过展示错误程序来讲解编程容易出错的地方,让学生把常见错误的英文关键词写在教材的首页,方便学生查阅。这样,学生逐渐学会自己调试程序,找到出错的地方,提高学生的编程能力。

猜你喜欢
变量
抓住不变量解题
利用不变量去分析
也谈分离变量
例谈变量代换法解题
素变量混合幂丢番图逼近
SL(3,3n)和SU(3,3n)的第一Cartan不变量
非线性三变量差分不等式及其应用
分离变量法:常见的通性通法
不可忽视变量的离散与连续