A-A+

阅读以下说明和Java代码。[说明] 已知类Stock和类JavaMain都定义在JavaM

2022-08-05 20:45:45 问答库 阅读 172 次

问题详情

阅读以下说明和Java代码。
[说明]
已知类Stock和类JavaMain都定义在JavaMain.java文件中,类Stock的定义中有四处错误,分别在代码的第01、02、06、07行。请修改错误并给出修改后该行的完整代码,并写出改正错误后程序运行的输出结果。
[Java代码]
01 public class Stock{
02 static {
03 shares=0;
04 share_val=0.0;
05 }
06 private Stock(){getData();}
07 private Stock(int n, double pr=0){
08 shares=n;
09 share_val=pr;
10 getData();
11 }
12 public void getData(){
13 System.out.print(shares+":"+share_val+"");
14 }
15 private int shares; //非静态变量
16 private double share_val; //非静态变量
17 };
18
19 public class JavaMain{
20 public static void main(String args[]){
21 Stock a=new Stock();
22 Stock b=new Stock(1,67.5);
23 //其它代码省略,且代码无输出
24 }
25 }请帮忙给出正确答案和分析,谢谢!

参考答案

正确答案:01代码行修改结果; class Stock{02代码行修改结果: {06代码行修改结果: public Stock()<getData();}07代码行修改结果: public Stock(int ndouble pr){程序运行的输出结果为:0:0.0 1:67.5
01代码行修改结果; class Stock{02代码行修改结果: {06代码行修改结果: public Stock()<getData();}07代码行修改结果: public Stock(int n,double pr){程序运行的输出结果为:0:0.0 1:67.5 解析:因为JavaMain和Stock定义在同一个文件中,所以只能够有—个公共类,因此Stock前的public应该去掉:因为shares和share_val都是非静态变量,所以不能够用静态初始化块进行初始化,所以应该把静态初始化块改为非静态初始化块,将static关键字去掉:定义中的构造函数为私有的,但构造函数在JavaMain类中被使用,因此构造函数应该为公共的。所以06和07行的代码应该将private改为public:构造函数中调用了输出函数,所以Java Main程序运行后输出结果为:0:0.0 1:67.5。

考点:定义,代码