Lojban是一种在过去40年里发展起来的人工语言,它比大多数语言中从0到9的数字更容易计数:
0 no
1 pa
2 re
3 ci
4 vo
5 mk
6 xa
7 ze
8 bi
9 so更大的数字是通过将数字粘合在一起而产生的。例如,123是"pareci“。编写一个读入lojban字符串的程序(表示no。小于或等于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" );
}
}
}
}
}
}发布于 2013-10-05 08:14:16
正如@Makoto所说,和that question explains一样,使用==不是比较字符串的方式。相反,请使用
str.substring(i-2,i).equals(q[ale]);如果两端引用相同的对象,==运算符将返回true。如果对象是相等的,则不会。
https://stackoverflow.com/questions/19192508
复制相似问题