int a = 17;
        String aa = Integer.toBinaryString((int) a);
        int sum=0;
        for(int i=0;i<aa.length();i++)
        {
            if(aa.charAt(i)==49)
            {
                sum++; 
            }     
        }        if(sum==1)
        {
            System.out.println("yes");
        }else
        {
            System.out.println("no");
        }    这个算法,我认为  aa.charAt(i) 值应该是1   转换成整形 应该是 (int)1   怎么会等于49?

解决方案 »

  1.   

    只知道toBinaryString()是转化为ASCII码的字符串
    charAt这个不知道怎么用……
      

  2.   

    另外,1的ASCII码十进制是49个人理解:
    toBinaryString(),转化为ASCII码的字符串
    遍历字符串,找出为1的字符有多少个不清楚java中字符和数字可不可以互相转换等待高手答疑
      

  3.   

    先是String aa="10001";
    然后,aa.charAt(0)返回的是字符  '1'  而字符 '1' 就是等于int的49
    你可以这样:
    char c='1';
    System.out.println(c==49);
      

  4.   

    char类型的'1'转换成int就是49啊~~
      

  5.   

    先是String aa="10001";  
    然后,aa.charAt(0)返回的是字符  '1'  而字符 '1' 就是等于int的49  
    你可以这样:  
    char c='1';  
    System.out.println(c==49); 该答案正确.
    Bin         Dec        Hex      缩写/字符 0011 0000    48        30            0 
    0011 0001    49        31            1 
    0011 0010    50        32            2 
    0011 0011    51        33            3 
    0011 0100    52        34            4 
    0011 0101    53        35            5 
    0011 0110    54        36            6 
    0011 0111    55        37            7 
    0011 1000    56        38            8 
    0011 1001    57        39            9 
      

  6.   

    System.out.println("aa="+(int)aa.charAt(i));