if ((buffer.substring(i,i+1)).equals("1") )
        {
count++;
}
    }
if (count%2!=0)
{
             buffer.delete(0,0);
 buffer.insert(i,"1");
 System.out.println( buffer.toString());
}

解决方案 »

  1.   

    你对StringBuffer的substring理解不对,你应该看看他的接口说明
    substring(start, end)如果start>end 她就会抛出你说的异常.
    出错的时候应该看看jdk文档,这种问题很容易发现的
      

  2.   

    substring(i, i+1).
    看看jdk的帮助吧,substring(start, end), 不是substring(start, count).
      

  3.   

    你后面替换0位的数字写法不对,全部可用的代码如下:
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String a = new String();
        System.out.println("pls input number");
        a = br.readLine();    StringBuffer buffer = new StringBuffer(a);
        buffer.insert(0, "0");
        buffer.insert(1, "0");
        buffer.insert(3, "0");
        System.out.println(buffer.toString());    int count = 0;
        for (int i = 3; i < buffer.length(); i = i + 2) {
          if ( (buffer.substring(i, i+1)).equals("1")) {
            count++;
          }
        }
        if (count % 2 != 0) {
          buffer.setCharAt(0,'1');
          System.out.println(buffer.toString());
        }
      

  4.   

    TO:快乐鸟,刚才的问题解决了,谢谢!
    请帮助看看,这个程序的第32行,  if ((buffer.charAt(2)).equals("1"))这种表达方式有什么问题,是判断字符串第三位是否为“0”,提示错误:char can not be dereferenced, 应该怎么表达才正确?谢谢!
    import java.util.*;
    import java.io.*;
    public class ArrayChange1 
    {
    public static void main(String[] args) throws Exception
    {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String a = new String();
        System.out.println("pls input number");
        a = br.readLine();
        StringBuffer buffer = new StringBuffer(a);
        buffer.insert(0, "0");
        buffer.insert(1, "0");
        buffer.insert(3, "0");
        System.out.println(buffer.toString());
        int count = 0;
        for (int i = 3; i < buffer.length(); i = i + 2) {
          if ( (buffer.substring(i, i+1)).equals("1")) {
            count++;
          }
        }
        if (count % 2 != 0) {
          buffer.setCharAt(0,'1');
          System.out.println(buffer.toString());
        }
    int count1, count2;
        for (int i = 6; i < buffer.length(); i = i + 1) {
          if ( (buffer.substring(i, i+1)).equals("1")) {
            count1++;
    }
    }
      if ((buffer.charAt(2)).equals("1"))
      {
      count2=1;
      }
      count = count1+ count2;
      if (count % 2 != 0) {
          buffer.setCharAt(1,'1');
          System.out.println(buffer.toString());
          }
        }
        }
      

  5.   

    请问有没有更好的方法在字符串里取值,除了SUBSTRING,谢谢!
      

  6.   

    if ((buffer.charAt(2)).equals("1")),
    当然不对了.
    buffer.charAt(2)取到的是char型数据,能用equals?
    用==就可以了.
    另外上面的count1,count2给赋个初值,
    不然要出错的哦.这种东东自己看看文档就搞定哈.
      

  7.   

    我也认为应当努力学习英语
    看懂java帮助文档
      

  8.   

    我倒是能看懂英语,课JAVA的帮助文件在哪?是那个DOCUMENT吗?怎么让它联机工作?或者通常你们是怎么使用的?