没有错啊!
在你的str字符串中,acsii为3的字符确实不存在啊
acsii为1的字符也不存在

解决方案 »

  1.   

    当然了, 你找 ASCII 码为 3 对应的字符,明显没有嘛, 当然 -1,
    你又从位置2开始找 ASCII 码为 1 的字符, 当然也没有.注意这里第一个参数 , 是一个能对应到字符的整数, 比如 ASCII ,
      

  2.   

    如果是截取字符串,应该是这样
    str.substring(3);
    str.substring(1,3);str.charAt(0);是取得字符串第一位的acsii码,取得结果是a=97然后再
    System.out.println(str.indexOf(97)); 会得到0;
      

  3.   

    哦,原来(int)是取acsii啊:)还有,哪个函数将字付换成acsii?
      

  4.   

    这个问题我明白拉:没有函数可以将一个字符转成acsii吗
      

  5.   

    charAt(index)就是返回它的ascii码的
      

  6.   

    不是啊,
     String str="bbc";
       System.out.print(str.charAt(0));结果明明是
    b
      

  7.   

    楼主是被System.out.print愚弄了。首先str.charAt(0) 返回值是 char型的。Char型变量存储一个字符,因为Java使用Unicode,所以每个字符16位 两个字节。
    可以这样负值--
    char ch=0;
    char ch='X'
    char ch='\u0058'所以 如果这样
    String str="bbc";
    char ch=str.charAt(0);
    System.out.print(ch);
    打印出的是'b'的ascii编码如果System.out.print(str.charAt(0));
    打印出的是字符串--------
    好像还是没说明白,总之 你看一下 System.out.println 中println()的代码就清楚了,一层层的看下去
      

  8.   

    不知道yyzh(顶楼的千万记得结贴给分) 有没有测试一下,怎么我
    char ch=str.charAt(0);
    System.out.print(ch);

    System.out.print(str.charAt(0));
    打出来的都是
    b
      

  9.   

    我测了一下
    char ch=str.charAt(0);
    System.out.print(ch);

    System.out.print(str.charAt(0));
    在我这打印出来的结果是不一样的。你那里是什么版本的JDK?我不清楚不同版本的JDK会不会有这个差异!
      

  10.   

    我也试过,打印出来的结果是不一样的!可能他的JDK版本低于1.4的吧!
      

  11.   

    我来做一下小该动::
    int ch=str.charAt(0);
    System.out.print(ch);这样就OK了