String zmx="88888(dasdsadsad)";
System.out.print(zmx.indexOf("("));
System.out.print(zmx.substring(1, zmx.indexOf("(")));为什么结果会是58888?

解决方案 »

  1.   

    你认为应该是什么?
    结果完全正确
    System.out.print(zmx.indexOf("(")); // 输出了5
    System.out.print(zmx.substring(1,zmx.indexOf("("))); // 输出了4个8
      

  2.   

    System.out.print(zmx.indexOf("(")); 
    这句返回的是5;
    System.out.print(zmx.substring(1,   zmx.indexOf("(")));
    这句返回的是8888
    substring(int beginIndex,int endIndex)
    返回的新字符串从指定的beginIndex处开始(也就是第二个8),直到索引endIndex-1处结束
      

  3.   

    5 是第二行运行的结果。
    8888 是第三行运行的结果。
    合起来就是58888如果你想每行结果各占独立一行,把print改成println即可。如果你想第三行的执行结果是88888,代码改成System.out.print(zmx.substring(0, zmx.indexOf("("))); 
      

  4.   

    第一个输出:“(”在zmx中的索引点5上(第1个字符索引是0),所以输出“5”。
    第二个输出:从索引1开始取(也就是第二个8开始)直到索引5为止(但不包括索引5上的这个字符),因此输出“8888”。拼在一起就是“58888”。
      

  5.   

    给java2000_net  他老人家回答的最快!