农场游戏开发记录十五

农场游戏开发第三周开始了,也是开始控制台交互部分的开发。开始觉得挺没头绪的,因为能想到菜单跳来跳去,不知道该怎么跳。后来想到一个办法,主体用while(true)控制,再每个小部分写一个独立的方法,符合条件即调用,调用完毕符合条件则返回。应该是可行的。不过实验过程遇到一个问题。一个全局Scanner对象sc在一个方法中使用,为何在switch语句中调用该方法中,sc不起作用呢。代码如下:

public class Farmgame {

	private static Scanner sc;

	public static void main(String[] args) {
/*
 * 初始化对象
 */
		Farm farm = new Farm();// 初始化农场
		Farmer farmer = new Farmer();// 初始化好Farmer/Storage等类的对象
		farm.setSoilArray();// 初始化农场土壤
		Storage stor = new Storage();
		SeedStorage seedstor = new SeedStorage();
		PlantsStorage plantsstor = new PlantsStorage();
		Seed sd = new Seed();// 初始化Seed类,这个对象可以被反复利用
		Plants plt = new Plants();
		sc = new Scanner(System.in);
		int i = 0;
		String str;
/*
 * Welcome!
 */
System.out.println("Welcome!Farmer,begin your journey!");
		
		//开始种植
while(true) {
	System.out.println("你想去哪里?选择数字:1、农场;2、种子商店;3、建筑商店;4、卖农产品。");
	test();
	i = sc.nextInt();
	switch(i) {
	case 1:
	case 2:
	case 3:
	case 4:test();break;
	default:System.out.println("请输入合理数字");break;
	}
	System.out.println("ss");
//	break;
}
public static void test() {
		System.out.println("test");
		String str;
		str = sc.nextLine();
		System.out.println(str);
	}```
上面main方法中,第一个test()能成功调用sc.nextLine。而第二个test()则不出现这个等待录入界面。后来在test()方法中重新定义一个Scanner对象就解决了这个问题。但原理还不懂,需要去读下Scanner的类说明了。

另外附上交互界面设计流程图:

![在这里插入图片描述](https://img-blog.csdnimg.cn/2020090723391578.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NhbnJlbnpoaQ==,size_16,color_FFFFFF,t_70#pic_center)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值