一个Java题:从键盘对接收的字符串中的字母进行大小写互转,输出后出现问题,求助!

不知道为何代码连续输出后字符串都是连着的导致越来越长!试了好久不知如何解决,求助大家帮忙!分不多,不好意思了!publicclassTextTransform{publi... 不知道为何代码连续输出后字符串都是连着的导致越来越长!
试了好久不知如何解决,求助大家帮忙!
分不多,不好意思了!

public class TextTransform
{
public static void main(String args[])throws Exception
{
Scanner scan = new Scanner(System.in);
StringBuilder sb = new StringBuilder();
while(scan.hasNextLine())
{
String str = scan.nextLine();
if(str.equalsIgnoreCase("exit"))break;
for(int x = 0; x <str.length(); x++)
{
if(str.charAt(x)>='a' && str.charAt(x)<='z')
{
sb.append((char)(str.charAt(x)-32));
}
else if(str.charAt(x)>='A' && str.charAt(x)<='Z')
{
sb.append((char)(str.charAt(x)+32));
}
else
{
sb.append(str.charAt(x)); // ?? 不知为何这里不用强转或者加上(char) 一样都是字符
}
}
str = new String(sb);
System.out.println(str);
}
}
}
上面的注释无关紧要,一不小心就复制贴里了!

主要的问题还是输出后随着键盘录入的次数导致字符串都是连着了,没清空缓冲区?
求救大家帮助修改代码!
展开
 我来答
haohaizi0077
2014-12-29 · TA获得超过285个赞
知道小有建树答主
回答量:242
采纳率:0%
帮助的人:132万
展开全部
在System.out.println(str);后打印输出一个换行符
更多追问追答
追问

不好意思,换行是多余的,而且上一次输出的字符串又一次出现了下一行.....

追答
看出来原因了,你每次都往sb添加字符,所以会留下之前的字符,只要在while循环开头清空sb即可。这次好了就采纳吧!!
其实你注释的部分没有改变原来的字符,它当然是字符了,
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式