2017-07-12 58 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); 

希望它能帮助!