一直提示出错,头痛

qq_38649890 2018-03-30 11:04:42
、实现思路

2-1. 按实验要求创建工程并配置环境。

2-2. 创建老虎实体类及其相关属性:

2-2.1. 在cn.campsg.java.experiment.entity 包中创建老虎实体类:Tiger;

2-2.2. 定义私有属性成员变量,类型:String type;

2-2.3. 为type添加getter/setter方法。

2-2.4. 创建老虎类的2个构造体:

1)第一个构造体为0参默认构造函数;

2)第二个构造体为1参构造函数,参数类型为字符串,需对老虎类型赋值。

2-2.5. 根据实验要求,实现老虎类的吃饭方法eat:

1)在方法内定义食物变量: stuff;

2)根据老虎的类型,为食物变量赋值,判定规则如下:

老虎类型为“华南虎”时,stuff值为“牛肉”;

老虎类型为“新疆虎”时,stuff值为“羊肉”;

老虎类型为“东北虎”时,stuff值为“猪肉”。

3)控制台输出老虎对象吃饭的信息,信息格式如下:

"饲养员喂" + type + "吃" + stuff。

2-3. 创建饲养员业务实现类:

2-3.1. 在cn.campsg.java.experiment.entity包中创建饲养员业务类:Feeder;

2-3.2. 为Feeder类创建默认构造体:

1)在构造体内创建Tiger对象数组,数组可定义为Feeder类的成员变量。

2)依次初始化Tiger对象数组中的成员为:华南虎、东北虎、新疆虎对象。

2-4. 重载不同的喂养方法:

2-4.1. 创建指定类型老虎的喂养方法,函数形式如下:


+ 提示

public void feed(String type){

}


1)循环饲养员类中的Tiger数组,判断其成员的类型属性是否与参数一致。

2)如果参数不为null,并且Tiger数组中成员的类型属性与参数一致,那么调用该成员的eat方法,实现喂养。

2-4.2. 创建所有类型老虎的喂养方法,函数形式如下:



+ 提示

public void feed(){

}


1)可直接调用指定类型老虎的喂养函数:feed(String type)。

2)喂养函数调用时,参数可设定为null。


+ 技术常识

1)在实际生产环境中,重载函数之间通常相互调用,以增加业务函数的维护性。

2)本实验,0参feed正是利用了1参feed的判null逻辑,实现了所有类型的老虎喂养,而不是重复地调用eat函数。


2-5. 测试饲养员的不同喂养方式:

2-5.1. 在包cn.campsg.java.experiment中创建模拟喂养主类:MainClass

2-5.2. 在MainClass内创建main函数。

2-5.3. 在main函数中实现老虎喂养功能的测试:

1)创建饲养员对象。

2)所有类型老虎的喂养:调用饲养员的0参feed方法;

3)指定类型老虎的喂养(喂养华南虎):调用饲养员的1参feed方法。



代码:
package cn.campsg.java.experiment.entity;

public class Tiger {
private String type;
public Tiger() {}
public Tiger(String type) {
this.type=type;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public void eat() {
String stuff=null;
if(type=="华南虎") {stuff="牛肉";}
else if(type=="东北虎") {stuff="猪肉";}
else if(type=="新疆虎") {stuff="羊肉";}
System.out.println("饲养员喂"+type+"吃"+stuff);
}
}

package cn.campsg.java.experiment.entity;

public class Feeder {
private Tiger tigers[];
public Feeder() {
tigers=new Tiger[3];
tigers[0]=new Tiger("华南虎");
tigers[1]=new Tiger("东北虎");
tigers[2]=new Tiger("新疆虎");
}

public void feed(String type) {
if(type==null)
{
System.out.println("饲养员喂华南虎吃牛肉");
System.out.println("饲养员喂东北虎吃猪肉");
System.out.println("饲养员喂新疆虎吃羊肉");
}
for(int i=0;i<tigers.length;i++)
{
if(tigers[i].getType().equals(type)&type!=null)
{
tigers[i].eat();
}
}
}



public void feed() {
feed(null);
}

}

package cn.campsg.java.experiment;

import cn.campsg.java.experiment.entity.Feeder;

public class MainClass {

public static void main(String[] args) {
// TODO Auto-generated method stub
Feeder s=new Feeder();
s.feed();
s.feed("华南虎");
}

}


错误i详情:
5 Tiger.eat函数业务测试 × 0.0 eat函数中没有为‘华南虎’设置正确的喂养食物:‘牛肉’
8 Feeder.feed(String)函数业务测试 × 0.0
9 Feeder.feed函数业务测试 × 0.0
老师提示是equals这里有问题,我怎么觉得不是,是不是逻辑错了
...全文
732 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿闰 2018-04-02
  • 打赏
  • 举报
回复
不要用==,要用equals,最简单的理解是 数字比较可以用==,字符串要用equals
qq_38649890 2018-04-02
  • 打赏
  • 举报
回复
引用 1 楼 阿顾1234的回复:
你是运行的时候报什么错误?截个图看看 我这里运行的时候没有出现错误 还有String类型的变量与字符串判断是否相等的时候尽量用equals,"=="是用来判断地址的
恩,老师也这么说,我换了以后就好了,谢谢了
通大小强 2018-03-31
  • 打赏
  • 举报
回复
饲养员喂华南虎吃牛肉 饲养员喂东北虎吃猪肉 饲养员喂新疆虎吃羊肉 饲养员喂华南虎吃牛肉 你的结果是对的。。。。
顾工讲码 2018-03-31
  • 打赏
  • 举报
回复
你是运行的时候报什么错误?截个图看看 我这里运行的时候没有出现错误 还有String类型的变量与字符串判断是否相等的时候尽量用equals,"=="是用来判断地址的

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧