1

在过去四十年发展起来的人工语言 Lojban 中计数比大多数语言更容易从零到九的数字是:

0  no
1  pa
2  re
3  ci
4  vo
5  mk
6  xa
7  ze
8  bi
9  so

通过将数字粘合在一起来创建更大的数字。例如,123 是“pareci”。编写一个程序,读取一个 lojban 字符串(表示一个小于或等于 1,000,000 的数字)并以数字形式输出。

我不知道发生了什么;看来我的程序没有检查 if 语句 if (str.substring(i-2,i) == q[ale])。循环的其余部分工作正常。有什么建议吗?

public class apple {
    public static void main(String[] args) {
        String [] q =
           new String[10];//"no","pa","re","ci","vo","mk","xa","ze","bi","so"];
        q[0] = "no";
        q[1] = "pa";
        q[2] = "re";
        q[3] = "so";
        q[4] = "ci";
        q[5] = "vo";
        q[6] = "mk";
        q[7] = "xa";
        q[8] = "ze";
        q[9] = "bi";

        //q[0] = "so";
        int ln;

        String str = "nocipa";
        ln = str.length();

        if (ln % 2 != 0)
        {
            System.out.println("Invalid number");
        }
        else
        { 
            for (int i = 2; i <=ln-2; i = i + 2)
            {
                for (int ale = 0; ale < 9; ale++)
                {
                    if (str.substring(i-2,i) == q[ale])
                    {
                        System.out.print("hello" ); 
                    }
                }
            }
        }
    }
}
4

1 回答 1

1

正如@Makoto 所说,正如那个问题所解释的那样,使用 ==不是比较字符串的方法。而是使用

str.substring(i-2,i).equals(q[ale]);

==true如果双方都引用同一个对象,则运算符将返回。如果对象相等,则不会。

于 2013-10-05T00:14:15.800 回答