亲爱的老师和学哥学姐们:你们好!帮我看看2-16编程题

亲爱的老师和学哥学姐们:你们好!帮我看看2-16编程题

 public int getWheel() {
  if (this.wheel >= 2 && this.wheel<=4) 
   this.wheel = wheel;
   else
   this.wheel = 2;
  return wheel;
 }

这里的this.wheel=wheel;下有黄标线警示,eclipse提示对变量 wheel 的赋值不生效。但是在执行中可以正常使用。请问老师和学长:这是什问题?是不是书写错误?怎么改过来?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

5回答
吴跃民 2017-05-10 22:37:27

判断语句要放在setXX方法中

public int getWheel() {

        return wheel;

}

public void setWheel(int wheel) {

        if (wheel < 2 || wheel > 4) {// 如果轮子数小于2或大于4,那么轮子数仍然赋默认值

                this.wheel = 2;

        } else {

                this.wheel = wheel;

        }

}

慕粉2120405385 2017-05-10 18:44:23

这里在set方法中对属性进行赋值,然后 if (this.wheel >= 2 && this.wheel<=4) 中把this去掉就对了 

public int getWheel() {
  return wheel;
 }

 public void setWheel(int wheel) {

 if (wheel >= 2 && wheel<=4) 
   this.wheel = wheel;
   else
   this.wheel = 2;  this.wheel = wheel;
 }

如果帮到你,请采纳谢谢


喜欢做梦的鱼 2017-05-05 18:56:56

并不理解你的代码中为什么要在getWheel方法中进行判断?

get方法主要是获取数据,而不是进行赋值的。

按你的代码来看,this.wheel=wheel; 而赋值符号右侧的wheel由于在方法中并没有定义,也没有从外部通过参数传入,系统默认就会当做类中的属性来使用,也就是此时,赋值符号左右两侧是同一个变量自己赋值给自己,就会出现黄色警告,以及赋值结果失误。

建议你试试把getWheel方法中的代码放到set方法中,完成赋值操作,get方法中简单return wheel;

如果解决了你的疑惑,请采纳,祝学习愉快~

  • 嗯,我记得老师讲的都是在get方法取值时做限定的?我试试在set方法里限定看看。
    2017-05-05 19:13:27
  • 在set方法里是没有提示信息了,但不能起限定作用了
    2017-05-06 00:59:54
  • 限制应该在赋值的时候下,而不是在取值的时候,可以再看看老师的案例,有问题继续提问,没有关系哒~~
    2017-05-06 16:23:45
提问者 qq_秦皇岛崔哥_03852186 2017-05-05 13:36:09

package bicycleLianxi;

public class NonMotor {
 // 私有属性:品牌、颜色、轮子(默认2个)、座椅(默认 1个)
 private String brand;
 private String color;
 private int wheel;
 private int chair;

 // 无参构造方法
 public NonMotor() {

 }

 // 双参构造方法,完成对品牌和颜色的赋值
 public NonMotor(String brand, String color) {
  this.setBrand(brand);
  this.setColor(color);

 }

 // 四参构造方法,分别对所有属性赋值
 public NonMotor(String brand, String color, int wheel, int chair) {
  this.setBrand(brand);
  this.setChair(chair);
  this.setWheel(wheel);
  this.setColor(color);

 }

 // 公有的get***/set***方法完成属性封装

 public String getBrand() {
  return brand;
 }

 public void setBrand(String brand) {
  this.brand = brand;
 }

 public String getColor() {
  return color;
 }

 public void setColor(String color) {
  this.color = color;
 }

 public int getWheel() {
  if (this.wheel >= 2 && this.wheel<=4)
   this.wheel = wheel;
   else
   this.wheel = 2;
  return wheel;
 }

 public void setWheel(int wheel) {
  this.wheel = wheel;
 }

 public int getChair() {
  if(this.chair>=1&&this.chair<=4)
   this.chair = chair;
  else this.chair = 1;
  return chair;
 }

 public void setChair(int chair) {
  this.chair = chair;
 }

 // 方法:运行,描述内容为:这是一辆**颜色的,**牌的非机动车,有**个轮子,有**个座椅的非机动车。其中**的数据由属性提供
 public String work() {
  String str = " 这是一辆" + this.getColor() + "颜色的," + this.getBrand()
    + "牌的,有" + this.getWheel() + "个轮子,有" + this.getChair()
    + "个座椅的机动车。 ";
  return str;
 }
}

这是完整的编码。在使用中输入小于2或大于4都可以赋值为2.

没有马甲线的安琪拉 2017-05-05 11:09:56

this.wheel=wheel;这条语句中的赋值符号右边的wheel是什么?哪里来的?你最好把源码完整贴出来

  • package bicycleLianxi; public class NonMotor { // 私有属性:品牌、颜色、轮子(默认2个)、座椅(默认 1个) private String brand; private String color; private int wheel; private int chair; // 无参构造方法 public NonMotor() { } // 双参构造方法,完成对品牌和颜色的赋值 public NonMotor(String brand, String color) { this.setBrand(brand); this.setColor(color); } // 四参构造方法,分别对所有属性赋值 public NonMotor(String brand, String color, int wheel, int chair) { this.setBrand(brand); this.setChair(chair); this.setWheel(wheel); this.setColor(color); } // 公有的get***/set***方法完成属性封装 public String getBrand() { return brand; } public void setBrand(String brand) { this.brand = brand; } public String getColor() { return color; } public void setColor(String color) { this.color = color; } public int getWheel() { if (this.wheel >= 2 && this.wheel<=4) this.wheel = wheel; else this.wheel = 2; return wheel; } public void setWheel(int wheel) { this.wheel = wheel; } public int getChair() { if(this.chair>=1&&this.chair<=4) this.chair = chair; else this.chair = 1; return chair; } public void setChair(int chair) { this.chair = chair; } // 方法:运行,描述内容为:这是一辆**颜色的,**牌的非机动车,有**个轮子,有**个座椅的非机动车。其中**的数据由属性提供 public String work() { String str = " 这是一辆" + this.getColor() + "颜色的," + this.getBrand() + "牌的,有" + this.getWheel() + "个轮子,有" + this.getChair() + "个座椅的机动车。 "; return str; } }
    2017-05-05 13:35:08
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师