一尘不染

用Java填充布尔数组

java

作为一个相当环保的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方法…

任何帮助都将受到欢迎!


阅读 195

收藏
2020-12-03

共1个答案

一尘不染

是否有任何原因使您使用Strings而不进行传入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所指出的,该代码实际上不起作用。

2020-12-03