循环输入字符到StringBuffer 最后输出字符问题

nikebjh 2014-06-09 10:23:39
就是从键盘循环输入一个字符,把它加到stringbuffer里,最后输出 本人java新手,调了很久。请大家帮我看看好嘛?
public static void main(String[] args){
StringBuffer sb = new StringBuffer();
Scanner reader=new Scanner(System.in);
String str=reader.nextLine();
str=reader.nextLine();
while(str!="a"){
sb.append(str);


str=reader.nextLine();
}
System.out.println(sb);
}
...全文
262 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zgd77521 2014-06-09
  • 打赏
  • 举报
回复
补充一下,给你加点注释方便于理解,谢谢采纳哦


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左边
		 * 是为了方式空指针异常。要习惯这样写
		 * 
		 */
	} 

xlight2023 2014-06-09
  • 打赏
  • 举报
回复
给楼组一个例子供参考:
	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();
	}
依然一叶 2014-06-09
  • 打赏
  • 举报
回复
。。。说错了 , 是永远成立
引用 5 楼 u010533788 的回复:
你这样永远跳不出循环。。。 你判断str != a 永远不成立,应该是 !str.equals("a")
。。。说错了,是永远成立,因为你比较的是地址。
依然一叶 2014-06-09
  • 打赏
  • 举报
回复
你这样永远跳不出循环。。。 你判断str != a 永远不成立,应该是 !str.equals("a")
zgd77521 2014-06-09
  • 打赏
  • 举报
回复
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()); }
rumlee 2014-06-09
  • 打赏
  • 举报
回复
判断字符应该用!equals,而不应该用!=
nikebjh 2014-06-09
  • 打赏
  • 举报
回复
引用 1 楼 zgd77521 的回复:
不明白你到底要实现什么效果?循环输出那你还判断“a”干嘛?是用户输入“a”之后就自动退出循环?
或者说输入的字符为EOF就停止,然后把sb里的字符全部输出来
zgd77521 2014-06-09
  • 打赏
  • 举报
回复
不明白你到底要实现什么效果?循环输出那你还判断“a”干嘛?是用户输入“a”之后就自动退出循环?

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧