調(diào)用方法輸出問題
public class Phone {
//屬性
float screen;
float cpu;
float mem;
public Phone(){
System.out.println("無參構(gòu)造器執(zhí)行!");
}
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+"有參構(gòu)造器執(zhí)行了");
}
}
尺寸:1.0cpu:2.0mem2.0有參構(gòu)造器執(zhí)行了
輸出結(jié)果為什么不對了 ??幫忙給解釋一下
2017-05-07
你的代碼是沒有問題的,但是你給的這個(gè)代碼是沒有main函數(shù)的。在main函數(shù)中調(diào)用構(gòu)造方法時(shí),要依據(jù)調(diào)用方法的參數(shù)而定.
譬如你的第一個(gè)無參數(shù)方法就是new Phone();
第二個(gè)就要給它參數(shù) new Phone(1.0f,2.0f,3.0f)。
然后你在代碼中有一個(gè)判斷:
if (newScreen<3.5f) {
System.out.println("輸入有誤,自動賦值3.5");
screen = 3.5f;
} else {
screen = newScreen;
}
如果你輸入1.0f,2.0f,3.0f,它執(zhí)行判斷之后會把screen從你賦值的1.0f 重新賦值為3.5f,然后else那一句會跳過不執(zhí)行,這個(gè)是沒毛病的。
但是你在后面有一句
screen = newScreen,這個(gè)是把你輸入的1.0f再次賦給screen,所以你輸出之后還會是1.0f, 2.0f, 3.0f。
下面的是我改的代碼:
public class Phone {
?//屬性
?float screen;
?float cpu;
?float mem;
?public Phone(){
?System.out.println("無參構(gòu)造器執(zhí)行!");
?}
?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+"有參構(gòu)造器執(zhí)行了");
?}
?public static void main(String[] args) {
??new Phone();
??new Phone(1.0f,6.0f,8.1f);//直接傳參數(shù),也可以是變量賦值傳參數(shù)
?}
?}
希望對你有幫助!^-^
2017-05-06
screen = newScreen;這句話多輸入了一次