java - Perl 到 Java 的翻译

标签 java perl

我想知道是否有人可以帮助解释以下代码片段中发生的情况,因为我正在尝试将其翻译为 Java,但我的 Perl 知识很少。

sub burble {
    my $cw = "%START%";
    my $sentence;
    my $nw;
    my ( $score, $s, $roll );
    while ( $cw ne "." )    # while we're not at the end
                            # of the sentence yet
    {
        $score = 0;

        # get total score to randomise within
        foreach $s ( values %{ $dict{$cw} } ) {
            $score += $s;
        }

        # now get a random number within that
        $roll  = int( rand() * $score );
        $score = 0;
        foreach $nw ( keys %{ $dict{$cw} } ) {
            $score += ${ $dict{$cw} }{$nw};
            if ( $score > $roll )    # chosen a word
            {
                $sentence .= "$nw " unless $nw eq ".";
                $cw = $nw;
                last;
            }
        }
    }
    return $sentence;
}

最佳答案

foreach $s (values %{$dict{$cw}}) {
    $score += $s;
}

就像

Map<String, Map<String, int>> dict = ...;
...
int score;
Map<String, int> mcw = dict.get( cw );

for ( mcw.values() : int s) {
    score += s;
}

还有

foreach $nw (keys %{$dict{$cw}})

就像

KEY_LOOP:
for ( mcw.keys() : String nw ) {
    ...
}

最后,

if ($score > $roll) # chosen a word
{
    $sentence .= "$nw " unless $nw eq ".";
    $cw = $nw;
    last;
}

就像:

if ( score > roll ) { // a break case
   if ( !nw.equals( "." )) { 
       sentence = sentence + nw + " ";
   }
   cw       = nw
   break KEY_LOOP;
}

关于java - Perl 到 Java 的翻译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11670829/

相关文章:

perl - 搜索文件中的特定行并存储它们

java - 在java中迭代谷歌地图距离矩阵响应api

java - 从 CSV 到 Eclipse 再到 MySql 的希伯来语编码都是垃圾

java - Netty 'handshake'解码器,告诉客户端发送数据的更好方式

algorithm - 部分排序算法

perl - 根据 ASCII 值分割字符串

regex - Perl Template::Toolkit 正则表达式匹配任一值

java - 检查字符串是否是语法上有效的句子?

java - 如何构造正确的 MultipartEntity 以在 java 中发送多部分/相关请求?

mysql - 为什么用分号连接多个 MySQL 查询对 Perl DBI 不起作用?