问题 问答题

阅读以下说明和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 = (1) ;

22 Stock b = new Stock(1,23);

23 //其他无输出代码省略

24 }

25 }

【问题2】
请补齐第21行代码中的空缺。

答案

参考答案:

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

填空题
单项选择题