加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – ruby??的case语句是否落空?

发布时间:2020-12-14 16:23:38 所属栏目:Java 来源:网络整理
导读:我正在用ruby编写一个hang子游戏,我想使用一个case语句来确定哪个身体部位对应于一些不正确的猜测.我使用我用于象棋和连接-4等其他游戏的棋盘类,因为我有一种方法来序列化棋盘类,允许我保存和加载游戏而没有任何额外的代码.对于要保存的游戏,我需要一些方法
我正在用ruby编写一个hang子游戏,我想使用一个case语句来确定哪个身体部位对应于一些不正确的猜测.我使用我用于象棋和连接-4等其他游戏的棋盘类,因为我有一种方法来序列化棋盘类,允许我保存和加载游戏而没有任何额外的代码.对于要保存的游戏,我需要一些方法来确定hang子手的错误猜测的数量,而不需要向板类添加额外的变量.为了解决这个问题,我在一个名为history的板子类上使用了一个实例变量,它可以用来将游戏从游戏推向棋盘历史.当棋盘被序列化时,历史也被保存,游戏中可以读取历史记录,并用于确定不正确的猜测.

在蝙蝠侠游戏中,我有一个叫做阅读历史的方法(我用于所有的游戏,因为它解决了上述的序列化问题). read_history方法负责读取过去的猜测,显示它们,并确定错误猜测的数量.然后将该号码传递给一个挂起方法,该方法可确定要添加的hangman的哪些身体部位.

def hang(incorrect)
    case incorrect
    when 0 
        @hangman = ["   ","   ","   "]
        break
    when 7 
        @hangman[2][2] = ''
    when 6
        @hangman[2][0] = '/'
    when 5
        @hangman[2][1] = '*'
    when 4
        @hangman[1][2] = ''
    when 3
        @hangman[1][0] = '/'
    when 2 
        @hangman[1][1] = '|'
    when 1
        @hangman[0][1] = 'o'
    end
end

如果我在java中写这个,并且将值5传递给上面的方法,它会读取该语句,直到它打到“当5”或java术语“case 5:”时.它会注意到在语句中没有中断,并且将向下移动执行“情况4:”代码的列表,并重复直到找到中断.如果0被传递,那么它将执行代码,看到break,并且不会执行和其他语句.

我想知道Ruby是否有能力使用case语句,方式是java的方式,直到下一个语句.对于我的特殊问题,我知道我可以使用一个0.upto(不正确的)循环并以这种方式运行这些例子,但是我想知道在ruby中使用的case语句的相似点和不同之处,而不是switch-case用于java

解决方法

它不会通过.

Ruby just doesn’t have the same behavior as Java for this type of statement.

如果你想通过行为模拟堕落,你可以这样做:

def hang(incorrect)
    @hangman = ["   ","   "]
    @hangman[2][2] = '' if incorrect > 6
    @hangman[2][0] = '/' if incorrect > 5
    @hangman[2][1] = '*' if incorrect > 4
    @hangman[1][2] = '' if incorrect > 3
    @hangman[1][0] = '/' if incorrect > 2
    @hangman[1][1] = '|' if incorrect > 1
    @hangman[0][1] = 'o' if incorrect > 0

    @hangman
  end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读