主要就是循环里的问题
++i变i++试试,不行了,就把循环的这个i打印到后台

解决方案 »

  1.   

    while(current!=null)
    这个条件不对
    读入的current在输入回车时仍然是个字符串,不为null
    长度为0
    所以会执行
    else {
              r+=Character.toUpperCase(current.charAt(0));
    就会越界
    可改为
    while(current.length()!=0)
      

  2.   

    to alaal(穷街) 和 HITZXL(编程要厚道)本不喜欢说别人,但一个好像是斑竹,一个名字是说要厚道
    这个程序不复杂,为啥不运行一下再看呢,就想当然的给个结论
    这个程序的i++和++i没有区别的
    保险起见还是做了个比较:
    for(int i=1;i<5;++i)
      System.out.println(i);
            
    for(int i=1;i<5;i++)
      System.out.println(i);
    如有错误欢迎指教
      

  3.   

    谢谢各位,果然是因为回车时的问题。“回车时仍然是个字符串,不为null,长度为0”,我记住了。还有,我想把条件变为
    if(Character.isWhitespace(current.charAt(i-1))||Character.isWhitespace(current.charAt(i+1)||(!Character.isLetter(current.charAt(i+1)))))
    为什么就又不行了呢?“!”的用法不就是相当于“非”吗?
      

  4.   

    错误提示是operator || cannot be applied to char,boolean。
      

  5.   

    我的说法也许有问题,回车后得到的是个空字符串"",这样写可能更好写
    while(!current.equals(""))
    长度为0
    后面问题是括号匹配问题,仔细看看括号,用jcreator比较容易看的出来配对的情况
    应该是:
    Character.isWhitespace(current.charAt(i+1))
    ||
    (!Character.isLetter(current.charAt(i+1)))你的写法相当于
    Character.isWhitespace(
    current.charAt(i+1)
    ||
    (!Character.isLetter(current.charAt(i+1)))
    )所以出错了