A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 公子-醉香 中级黑马   /  2013-12-19 19:21  /  1126 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. public class Test6 {
  2.         public static void main(String[] args) throws IOException {  
  3.         // 读取文本内容   
  4.         BufferedReader in = new BufferedReader(new FileReader("E:\\exam.txt"));  
  5.         String str = null;
  6.         String        s2 = new String();  
  7.         while ((s2 = in.readLine()) != null)  
  8.             str = str+s2;                                                // 如果s2不为空,将s2中的读到的每一行给str  
  9.                 in.close();  
  10.         int len = 0;  
  11.         while (str.length() > 0) {  
  12.             len = str.length();                                          // 获取第一个字符  
  13.             String s = str.substring(0,1);                         // 用空格替换,以便计算这个字符的个数  
  14.             str = str.replaceAll(s, "");                          // 写入文件  
  15.             System.out.println("["+s+"]" + "  出现  " + (len - str.length())+" 次");  
  16.   
  17.         }  
  18.     }

  19. }
复制代码



这个异常该如何处理?大神帮助一下
Exception in thread "main" java.util.regex.PatternSyntaxException: Unclosed group near index 1
(
^
        at java.util.regex.Pattern.error(Unknown Source)
        at java.util.regex.Pattern.accept(Unknown Source)
        at java.util.regex.Pattern.group0(Unknown Source)
        at java.util.regex.Pattern.sequence(Unknown Source)
        at java.util.regex.Pattern.expr(Unknown Source)
        at java.util.regex.Pattern.compile(Unknown Source)
        at java.util.regex.Pattern.<init>(Unknown Source)
        at java.util.regex.Pattern.compile(Unknown Source)
        at java.lang.String.replaceAll(Unknown Source)
        at com.itheima.Test6.main(Test6.java:31)

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

1 个回复

倒序浏览
刚才在电脑上试了一下,这应该是java转义的一些问题,你的字符串中包含了括号(当然还有其他需要转义的),以"("为例

  • while (str.length() > 0) {
  •             len = str.length();                                          // 获取第一个字符
  •             String s = str.substring(0,1);                         // 用空格替换,以便计算这个字符的个数
  •            if(s.equal("(")                                                 //对特殊字符进行转义
  •            s="\\"+s;
  •             str = str.replaceAll(s, "");                          // 写入文件
           if(s.equals("\\("))
          s=s.substring(1,2);                                         //反转义
System.out.println("["+s+"]" + "  出现  " + (len - str.length())+" 次");  

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马