2017-07-12 83 views
-1

我的想法是這樣的。使用失敗循環

  1. 我具有任何數量的(幾十數)

  2. 支票號碼

  3. 的長度,如果該長度爲1,則結束

  4. 如果長度超過一個(其是兩個)我想做一個循環過程,直到數字的長度達到一。 所以這是邏輯

  5. 如果數量的長度超過一(2),我拿了數十個值和一個人的數值。

  6. 然後我添加兩個號碼,

  7. 檢查結果的長度,如果仍然2重複過程

即數量爲38,長度大於1 十的值是3和一個人的價值是8.我加兩個,3 + 8 = 11。

11長度仍然不止一個。 Ten的值是1,One的值是1,加上兩者,1 + 1 = 2。

2長度爲1。循環結束。

這裏是我試過的代碼,但它的失敗(無限循環)

hitung = 38 
hitungtxt = Integer.toString(hitung); 
jumkar2 = hitungtxt.length(); 

while (jumkar2 > 1) { 
    char hita = hitungtxt.charAt(0); 
    char hitb = hitungtxt.charAt(1); 
    int hitung1=(int)hita; 
    int hitung2=(int)hitb; 
    hitung=hitung1+hitung2; 
    hitungtxt = Integer.toString(hitung); 
    jumkar2 = hitungtxt.length(); 
} 

回答

1

您的代碼:

char hita = hitungtxt.charAt(0); 
int hitung1=(int)hita; 

這將讓Ascii value該號碼。如果你想解決這個問題的嘗試:int hita = Integer.parseInt(String.valueOf(hitungtxt.charAt(0)));

所以,你的最終代碼應該是這樣的:

int hitung = 38; 
    String hitungtxt = Integer.toString(hitung); 
    int jumkar2 = hitungtxt.length(); 

    while (jumkar2 > 1) { 
     int hita = Integer.parseInt(String.valueOf(hitungtxt.charAt(0))); 
     int hitb = Integer.parseInt(String.valueOf(hitungtxt.charAt(1))); 
     hitung = hita + hitb; 

     hitungtxt = Integer.toString(hitung); 
     jumkar2 = hitungtxt.length(); 
    } 

    System.out.println(hitungtxt); 

希望它能幫助!