String s ="N410C"
String s1 = ""
for(int i=0;i<s.length();i++)
   s1 = String.valueOf(s1)+String.valueOf( (s.charAt(i)+i) % 10 );
   return s1;出来是什么结果呢? 能给出分析最好,谢谢! UP有分!!

解决方案 »

  1.   

    String s ="N410C"
    String s1 = ""
    for(int i=0;i<s.length();i++)
       s1 = String.valueOf(s1)+String.valueOf( (s.charAt(i)+i) % 10 );
       return s1;返回的应该是一串数字..
    s.charAt(i)取得的是s的每一个值.然后这个值加上i表示.将这个char类型自动转换为int.然后再与i相加.等到的值.除以10取余。将得到的余数再用valesOf转换为字符串与先前的s字符串相加.
    字符串相加等于把字符串相连.所以如果你第一次运行String.valueOf(s.charAt(i)+i) % 10 )得到的值是3.第二次运行的值是2.,第三次运行得到5,那么三次以后s1的值就等于325s1 = String.valueOf(s1)+String.valueOf( (s.charAt(i)+i) % 10 );
    这里改为s1 = s1+String.valueOf( (s.charAt(i)+i) % 10 );
    效果应该是一样的.不对意思.没有测试...不知道我分析得对不对
      

  2.   

    是N的ASCII码啊,每个字符都对应一个键值啊..
      

  3.   

    (s.chsrAt(i)+i)依次得到的值是不是这样:
    'N'+0 = 78+0 =78  与10取模得8
    '4'+1 = 4+1 = 5   与10取模得5
    '1'+2 = 1+2 = 3   与10取模得3
    '0'+3 = 0+3 = 3   与10取模得3
    'C'+4 = 67+4 = 71 与10取模得1
    结果是不是:85331?
      

  4.   

    'N'+0就是说N的ASCII码加上0。加0等于没加.懂了没
      

  5.   

    N的ASCII码是78,78%10取模为8,4的ASCII码(52),再加1为53,53%10取模为3,... 以此类推,得结果为83111
      

  6.   

    对..'4'+1
    不是4+1
    是4的ASCII码加1
      

  7.   

    N的ASCII码是78,78%10取模为8,
    4的ASCII码(52),再加1为53,53%10取模为3,
    1的ASCII码(49),再加2为51,51%10取模为1,
    0的ASCII码(48),再加3位51,51%10取模为1,
    C的ASCII码(67),再加4为71,71%10取模为1,
    得结果为83111