2013-10-05 15 views
1

在Lojban計數,​​這是一個在 最近四十年發展的人造語言,是在Lojban計數,​​從零到九的數字是:0沒有1 pa 2 re 3 ci 4 vo 5 mk 6 xa 7 ze 8 bi 9

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

較大的數字通過膠合數字一起創建:比大多數語言 從0到9的數字更容易。 例如,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"); 
        } 
       } 
      } 
     } 
    } 
} 
+2

另外,對於它的價值,測試字符串的長度是否是偶數*並不足以測試它是否是有效數字。必要,但不夠。 – John

+0

並且在聲明的數字列表中存在不一致:3是「ci」(在您的解釋中)或「so」(在您的代碼中)? – Matthieu

回答

1

由於@Makoto陳述,並作爲that question explains使用==是比較字符串的方式。而是使用

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

==運算符將返回true如果雙方都指向同一個對象。如果對象相同,則不需要。

相關問題