问答题
阅读以下说明和Java代码,请回答问题1和问题2。
【说明】
己知类Stock和类cxyjava都定义在cxyjava.java文件中,类Stock的定义中第14行前共有四行出现了错误,将下面代码修改正确并完善后的输出结果为:
0:0
1:23
【Java代码】
01 public class
Stock{
02 static {
03
shares = 0;
04 share val =
0.0;
O5 }
06
public Stock(){getData();}
07 public
Stock(int n, iht pr=0){
08
shares = n;
09
share val = pr;
10
getData();
11
}
12 public void getData()
{
13 System.out.println(shares
+ ":"+share_val);
14 }
15 private int shares;
16
private int share_val;
17 };
18
19 public class cxyjava{
20
public static void main(String args[]) {
21
Stock a ={{U}} (1) {{/U}};
22 Stock b = new Stock(1,23);
23 //其他无输出代码省略
24
}
25 }
问答题
【问题1】
请指出错误所在行号并给出该行修改后的完整结果。 |
【正确答案】
【答案解析】错误1:第1行,修改为:class Stock{
错误2:第2行,修改为:{
错误3:第4行,修改为:share val:=0;
或share_val=(int)0.0;
错误4:第7行,修改为:public Stock(int n,int pr){
【正确答案】
【答案解析】new Stock(),或者new Stock(0,0)
[分析]
Java代码中,一个文件只能有一个和文件同名的公共类,因此第一行的Stock类不能为公共类,需要去掉public修饰符。因为静态的初始化区域只能对类的静态变量进行
初始化,而shares和share_val不是静态变量,因此需要把第二行的static去掉,并且静态初始化区只在加载类的时候初始化一次。因为Java是强类型的语言,share_val是整形变量,因此第4行给share_val赋值0.0会出现类型错误,因此需要增加强制类型转换或把0.0更改为0。第7行Stock类的构造函数没有默认值的语法,因此需要将默认值去掉。
程序输出的第一行为0:0,而成员变量的初始化值都为0,因此仅需要调用构造函数 Stock()即可,也可明确指定初始化构造函数的参数值Stock(0,0)。