本帖最后由 jiFsgg 于 2010-02-09 11:13:36 编辑

解决方案 »

  1.   

      System.out.println(inwrite.substring(1,1)); // 这里就不行了
    1-1当然是不行的。1-2
      

  2.   

    public class Test111 {
    public static void main(String[] args) {
    String inwrite = "0"; // 读取输入的数字
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    try {
    inwrite = br.readLine();
    } catch (IOException e) {
    e.printStackTrace();
    } System.out.println(inwrite); // 我上面输入123456789 这里可以显示出来 for (int i = 0; i < inwrite.length(); i++) { // 然后我进for循环 就会报错 报错内容在最下面
    System.out.println(inwrite.length()); // length=9
    System.out.println("");
    System.out.println(inwrite.substring(0, 1)); // 这个值可以打出来 是1
                System.out.println(inwrite.substring(1, 2)); // 这里就不行了
                System.out.println(inwrite.substring(2, 3)); 
                System.out.println(inwrite.substring(3, 4)); }
    }
    }subString的用法建议再去看看
      

  3.   

               System.out.println(inwrite.substring(1, 2)); 
                System.out.println(inwrite.substring(2, 3)); 
                System.out.println(inwrite.substring(3, 4)); 
      

  4.   


    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    public class T { public static void main(String args[]) throws IOException {

    String inwrite="0";     //读取输入的数字
           BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            inwrite = br.readLine();
            if (inwrite.isEmpty()){
                inwrite="0";
            }                 System.out.println(inwrite);   // 我上面输入123456789  这里可以显示出来
                
                for (int i=0;i<inwrite.length();i++){  // 然后我进for循环 就会报错 报错内容在最下面
                    System.out.println(inwrite.length()); // length=9
                    System.out.println("");
                    System.out.println(inwrite.substring(0,1)); // 这个值可以打出来 是1
                    
                    System.out.println(inwrite.substring(1,1)); // 这里就不行了
                    System.out.println(inwrite) ;
    是下面出问题了
                    System.out.println(inwrite.substring(2,1)); // 但是如果我把所有的substring(0,1))都改成 substring(0)) substring(1)) substring(2))  值又是可以出来的
                    System.out.println(inwrite.substring(3,1)); //
                }
                
                
    }
    }问题原因:抛出: 
    IndexOutOfBoundsException - 如果 beginIndex 为负,或 endIndex 大于此 String 对象的长度,或 beginIndex 大于 endIndex
      

  5.   

                    System.out.println(inwrite.substring(0,1)); 
                    System.out.println(inwrite.substring(1,2));
                    System.out.println(inwrite.substring(2,3)); 
                    System.out.println(inwrite.substring(3,4)); 
      

  6.   

    substring(a,b); 表示从a开始到b-1结束
    所以b-a>0可以正常进行,但是b-a<=0则会数组越界。
    正如LZ所写的substring(1,1); 会数组越界的。
      

  7.   

    噢噢噢噢噢  这个substring 和 VB.NET的 substring不同  VB.NET 里面substring(s,e) s表示开始的索引 e表示从索引开始到结束的位数   谢谢大家了