作为一个相当环保的Java程序员,我给自己设定了尝试编写简单文本冒险的艰巨挑战。毫不奇怪,我已经遇到了困难!
我试图给我的Location类一个属性来存储退出包含的属性。我为此使用了一个布尔数组,以实质上保存代表每个出口的true / false值。我并不完全相信
a) 这是最有效的方法,并且
b) 我正在使用正确的代码填充数组。
我希望收到所有反馈,即使是对完整的代码进行大修!
目前,当实例化Location时,我生成了一个String,该字符串将发送给setExits方法:
String e = "N S U"; secretRoom.setExits(e);
在Location类中,setExits如下所示:
public void setExits(String e) { if (e.contains("N")) bexits[0] = true; else if (e.contains("W")) bexits[1] = true; else if (e.contains("S")) bexits[2] = true; else if (e.contains("E")) bexits[3] = true; else if (e.contains("U")) bexits[4] = true; else if (e.contains("D")) bexits[5] = true; }
老实说,我认为这看起来特别笨拙,但我想不出另一种方法。我现在也不完全确定如何编写getExits方法…
任何帮助都将受到欢迎!
是否有任何原因使您使用Strings而不进行传入booleans,即
String
booleans
public void setExits(boolean N, boolean E, boolean S, boolean W, boolean U, boolean D)
还是有二传手?
public void setNorthOpen(boolean open) { bexits[4] = open; }
其次,为什么将出口作为布尔数组存储,这是一个小的有限集合,为什么不只是
boolean N,S,E,W,U,D;
这样,您就不必跟踪每个方向是数组中的哪个数字。
也
这是一个正确的答案(如果不是像@gexicide那样的最佳选择),但我完全鼓励任何人在这里查看其他答案,以有趣的方式看一下如何用Java以不同的方式完成事情。
备查
起作用的代码属于“ 代码审阅”,而不是“堆栈溢出”。尽管正如@kajacx所指出的,该代码实际上不起作用。