承诺太虚伪
2017-05-06 18:35
public class Phone {
//属性
float screen;
float cpu;
float mem;
public Phone(){
System.out.println("无参构造器执行!");
}
public Phone(float newScreen,float newCpu,float newMem){
if (newScreen<3.5f) {
System.out.println("输入有误,自动赋值3.5");
screen = 3.5f;
} else {
screen = newScreen;
}
screen = newScreen;
cpu = newCpu;
mem = newMem;
System.out.println("尺寸:"+screen+"cpu:"+cpu+"mem"+mem+"有参构造器执行了");
}
}
尺寸:1.0cpu:2.0mem2.0有参构造器执行了
输出结果为什么不对了 ??帮忙给解释一下
你的代码是没有问题的,但是你给的这个代码是没有main函数的。在main函数中调用构造方法时,要依据调用方法的参数而定.
譬如你的第一个无参数方法就是new Phone();
第二个就要给它参数 new Phone(1.0f,2.0f,3.0f)。
然后你在代码中有一个判断:
if (newScreen<3.5f) {
System.out.println("输入有误,自动赋值3.5");
screen = 3.5f;
} else {
screen = newScreen;
}
如果你输入1.0f,2.0f,3.0f,它执行判断之后会把screen从你赋值的1.0f 重新赋值为3.5f,然后else那一句会跳过不执行,这个是没毛病的。
但是你在后面有一句
screen = newScreen,这个是把你输入的1.0f再次赋给screen,所以你输出之后还会是1.0f, 2.0f, 3.0f。
下面的是我改的代码:
public class Phone {
//属性
float screen;
float cpu;
float mem;
public Phone(){
System.out.println("无参构造器执行!");
}
public Phone(float newScreen,float newCpu,float newMem){
if (newScreen<3.5f) {
System.out.println("输入有误,自动赋值3.5");
screen = 3.5f;
} else {
screen = newScreen;
}
//screen = newScreen;//把这一行去掉,试一下效果
cpu = newCpu;
mem = newMem;
System.out.println("尺寸:"+screen+"cpu:"+cpu+"mem"+mem+"有参构造器执行了");
}
public static void main(String[] args) {
new Phone();
new Phone(1.0f,6.0f,8.1f);//直接传参数,也可以是变量赋值传参数
}
}
希望对你有帮助!^-^
screen = newScreen;这句话多输入了一次
Java入门第二季 升级版
530655 学习 · 6091 问题
相似问题