调用方法输出问题

来源:8-6 Java 中的构造方法

承诺太虚伪

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有参构造器执行了


输出结果为什么不对了 ??帮忙给解释一下

写回答 关注

2回答

  • qq_木偶匹诺曹_0
    2017-05-07 14:47:14

    你的代码是没有问题的,但是你给的这个代码是没有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);//直接传参数,也可以是变量赋值传参数
     }
     }

    希望对你有帮助!^-^

  • qq__krvAMN
    2017-05-06 19:03:57

    screen = newScreen;这句话多输入了一次

    qq_喷泉_... 回复承诺太虚伪

    在if...else...语句中已经重新对screen赋值了,若在if...else...语句外重新使用screen = newScreen;表示又一次将传入的值赋给screen,覆盖了前面的判断,也就是判断无效了,最后输出依然是传入的值

    2017-05-16 13:01:18

    共 2 条回复 >

Java入门第二季 升级版

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

530655 学习 · 6091 问题

查看课程

相似问题