如果是jsp,这没有什么好奇怪的,©本来就是(c)

解决方案 »

  1.   

    import java.io.*;public class BufferedInputStreamDemo {
      public static void main(String args[]) throws IOException {
        String s = "This is a © copyright symbol " +
          "but this is &copy not.\n";
        byte buf[] = s.getBytes(); 
        ByteArrayInputStream in = new ByteArrayInputStream(buf);
        BufferedInputStream f = new BufferedInputStream(in);
        int c;
        boolean ed = false;    while ((c = f.read()) != -1) {
          switch(c) {
          case '&':
            if (!ed) {
              //f.(32);
              ed = true;
            } else {
              ed = false;
            }
            break;
          case ';':
            if (ed) {
              ed = false;
              System.out.print("(c)");
            } else
              System.out.print((char) c);
            break;
          case ' ':
            if (ed) {
              ed = false;
              //f.reset();
              System.out.print("(c)");
            } else
              System.out.print((char) c);
            break;
         default:
           if (!ed)
               System.out.print((char) c);
           break;
          }
        }
      }
    }
      

  2.   

    //f.(32);//f.reset();分别是什么作用啊?
      

  3.   

    这个程序先要理解它的整体思想及特殊之处:特点非常明显:前一个&copy 被替换成了(c)输出,而后&copy一个却没有!思想是:用一个来标记,在遇见第一个&之前都是false,所以之前的字符都直接输出,然后遇见第一个&,变成ture,后面的copy就都没有输出,然后是‘;’,这是把‘;’换成(c),后面的字符依次处理。就得到了结果。看上去很奇怪,其实还是基本知识的运用,switch语句的运用!首先要看程序结果的特别之处,然后再对比那些输入时形式一样而输出结果不同之处,找出原因.记忆分析!
      

  4.   

    还有一点,前一个是©
    而后一个是&copy注意,后一个没有分号,这就是楼主的源程序中第二个&copy没有被替换的原因程序中用借助于变量用空格来处理