判断对象是否为空

判断对象是否为空

package com.imooc.menu;

import java.util.Scanner;

import com.imooc.model.implementation.*;
/**
 * Menu方法
 * 实现交互界面
 * 由于Animal子类的属性不允许用户定义,所以在此定义
 * @author J
 *
 */
public class Menu {
	Scanner sc=new Scanner(System.in);
	int inPut;
	
	//打印节目单
	public void show(){
		System.out.println("********欢迎来到太阳马戏团********");
		System.out.println("********   请选择表演者     ********");
		System.out.println("********     1、棕熊          ********");
		System.out.println("********     2、狮子          ********");
		System.out.println("********     3、猴子          ********");
		System.out.println("********     4、鹦鹉          ********");
		System.out.println("********     5、小丑          ********");
	}
	
	//打印退出提示
	public void logOut(){
		System.out.println("********是否继续观看?(0/1)********");
	}
	
	/**
	 * 打印表演者信息方法
	 * 根据用户输入的数字,调用相应的表演者信息
	 * 并调用退出提示方法和判断退出方法
	 */
	public void showJudge(){
		while(true){
			inPut=sc.nextInt();
			switch(inPut){
			case 1:
				Bear bear=new Bear("Bill",1);
				System.out.println(bear.info());
				logOut();
				logOutJudge();
				break;
			case 2:
				Lion lion=new Lion("Lain",2,"灰色","公狮");
				System.out.println(lion.info());
				logOut();
				logOutJudge();
				break;
			case 3:
				Monkey monkey=new Monkey("Tom",1,"金丝猴");
				System.out.println(monkey.info());
				logOut();
				logOutJudge();
				break;
			case 4:
				Parrot parrot=new Parrot("Rose",1,"牡丹鹦鹉");
				System.out.println(parrot.info());
				logOut();
				logOutJudge();
				break;
			case 5:
				Clown clown=new Clown("Kahle",5);
				System.out.println(clown.info());
				logOut();
				logOutJudge();
			default:
				System.out.println("*** 输入信息不正确,请重新输入! ***");
			}
		}
	}
	/**
	 * 退出方法
	 */
	public void logOutJudge(){
		while(true){
			inPut=sc.nextInt();
			switch (inPut) {
			case 1:
				show();
				showJudge();
				break;
			case 0:
				System.out.println("********     已退出!        ********");
				System.exit(0);//关闭当前进程。
			default:
				System.out.println("*** 输入信息不正确,请重新输入! ***");
			}
		}
	}
}
case 1:
				Bear bear=new Bear("Bill",1);
				System.out.println(bear.info());
				logOut();
				logOutJudge();
				break;

我想在  Bear bear=new Bear("Bill",1);  前面加一个判断,如果没有这个对象(或者说对象为空,不知道该怎么表达。。。),新建一个对象,如果有就直接  System.out.println(bear.info());  请问该怎么写呢?

正在回答

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

2回答

这个作业的考察点是多态的应用,所以应该先定义接口的引用,例如IAct actor=null;然后在case 语句后面进行对象的创建,如case 1后的代码为:actor= new Bear("Bill", 1);然后act方法的调用写在switch结构的外面,即actor.act();需要把输出的信息分别封装到子类act()中。

  • 慕村2295823 提问者 #1
    老师,我已经把多态的问题修改了,还是之前那个问题,我这种写法“case 1: IAct bear=new Bear("Bill",1); System.out.println(bear.act()); logOut(); logOutJudge(); break;” 每次执行都会new一个对象,我记得之前视频课程中老师讲过一种解决办法,就是加一个判断如果没有对象新建一个,如果有就直接调用act()方法,我想试试这种办法,但是不知代码该如何实现,请老师告知,谢谢
    2018-03-08 12:25:04
  • irista23 回复 提问者 慕村2295823 #2
    IAct actor=null;放到循环的外面。case 后actor= new Bear("Bill", 1);。actor.act()放到循环里,switch外。这个题目需要每个case创建一个对象,你说的判断那种情况适合创建一个对象的时候,这个对象可以复用。这个题目根据用户输入可能会创建很多个子类对象,所以不是非空就可以复用,还要判断是否是用户需要操作的对象,不适合上述情况。直接case中new就可以了。
    2018-03-08 13:45:20
  • 慕村2295823 提问者 #3
    非常感谢!
    2018-03-08 14:34:33
提问者 慕村2295823 2018-03-08 12:18:26
package com.imooc.test;

import com.imooc.menu.Menu;
/**
 * 测试类Test
 * 测试程序
 * @author J
 *
 */
public class Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//创建Menu对象,并调用Menu的方法实现作业要求
		Menu test=new Menu();
		test.show();
		test.showJudge();
		
	}

}
package com.imooc.model.interf;
/**
 * 接口IAct
 * 描述技能
 * 描述表演
 * @author J
 *
 */
public interface IAct {
	String skill();
	
	String act();
}
package com.imooc.menu;

import java.util.Scanner;

import com.imooc.model.implementation.*;
import com.imooc.model.interf.IAct;
/**
 * Menu方法
 * 实现交互界面
 * 由于Animal子类的属性不允许用户定义,所以在此定义
 * @author J
 *
 */
public class Menu {
	Scanner sc=new Scanner(System.in);
	int inPut;
	
	//打印节目单
	public void show(){
		System.out.println("********欢迎来到太阳马戏团********");
		System.out.println("********   请选择表演者     ********");
		System.out.println("********     1、棕熊          ********");
		System.out.println("********     2、狮子          ********");
		System.out.println("********     3、猴子          ********");
		System.out.println("********     4、鹦鹉          ********");
		System.out.println("********     5、小丑          ********");
	}
	
	//打印退出提示
	public void logOut(){
		System.out.println("********是否继续观看?(0/1)********");
	}
	
	/**
	 * 打印表演者信息方法
	 * 根据用户输入的数字,调用相应的表演者信息
	 * 并调用退出提示方法和判断退出方法
	 */
	public void showJudge(){
		while(true){
			inPut=sc.nextInt();
			switch(inPut){
			case 1:
				IAct bear=new Bear("Bill",1);
				System.out.println(bear.act());
				logOut();
				logOutJudge();
				break;
			case 2:
				IAct lion=new Lion("Lain",2,"灰色","公狮");
				System.out.println(lion.act());
				logOut();
				logOutJudge();
				break;
			case 3:
				IAct monkey=new Monkey("Tom",1,"金丝猴");
				System.out.println(monkey.act());
				logOut();
				logOutJudge();
				break;
			case 4:
				IAct parrot=new Parrot("Rose",1,"牡丹鹦鹉");
				System.out.println(parrot.act());
				logOut();
				logOutJudge();
				break;
			case 5:
				IAct clown=new Clown("Kahle",5);
				System.out.println(clown.act());
				logOut();
				logOutJudge();
			default:
				System.out.println("*** 输入信息不正确,请重新输入! ***");
			}
		}
	}
	/**
	 * 退出方法
	 */
	public void logOutJudge(){
		while(true){
			inPut=sc.nextInt();
			switch (inPut) {
			case 1:
				show();
				showJudge();
				break;
			case 0:
				System.out.println("********     已退出!        ********");
				System.exit(0);//关闭当前进程。
			default:
				System.out.println("*** 输入信息不正确,请重新输入! ***");
			}
		}
	}
}


问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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