或者说输入的字符为EOF就停止,然后把sb里的字符全部输出来

解决方案 »

  1.   

    判断字符应该用!equals,而不应该用!=
      

  2.   

    public static void main(String[] args){
    StringBuffer sb = new StringBuffer();
    Scanner reader=new Scanner(System.in);

    while(true){
    String str = reader.next();
    if(!"EOF".equals(str)){
    sb.append(str);
    }else{
    break;
    }
    }
    System.out.println(sb.toString());
      

  3.   

    你这样永远跳不出循环   你判断str != a   永远不成立,应该是    !str.equals("a")
      

  4.   

    给楼组一个例子供参考:
    public static void main(String[] args) {

    Scanner isr = new Scanner(System.in);
    StringBuffer sb = new StringBuffer();
    while(isr.hasNextLine()){
    String str = isr.nextLine();
    if(str.equals("EOF")){
    break;
    }
    sb.append(str);
    }
    System.out.println(sb.toString());
    isr.close();
    }
      

  5.   

    补充一下,给你加点注释方便于理解,谢谢采纳哦
    public static void main(String[] args){
    StringBuffer sb = new StringBuffer();
    Scanner reader=new Scanner(System.in);
    String str = "";//先定义一个字符串变量,用于接收键盘输入的值
    while(true){
    str = reader.next();//注意next()这个方法,它是个线程等待,不输入一直等
    if(!"EOF".equals(str)){//如果当前输入的值不等于EOF
    sb.append(str);//添加到sb中
    }else{//否则
    break;//跳出循环
    }
    }
    System.out.println(sb.toString());
    /**
     * 补充:
     * 你之前犯的错误是:
     * 1、没有把键盘输入的值放到循环中,
     * 因为每次都要重新赋值去判断所以要
     * 放到循环中。
     * 2、因为要判断输入的值是否等于EOF那
     * 必须用到判断啊,判断用什么?当然是if啦
     * 3、判断字符相等用equals()方法,==是判断
     * 内存存放的地址是否相同。而且把EOF放到equals左边
     * 是为了方式空指针异常。要习惯这样写
     * 
     */