| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 575 人关注过本帖
标题:〖求助〗java代码.难以理解.
只看楼主 加入收藏
有空格
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2005-12-14
收藏
 问题点数:0 回复次数:3 
〖求助〗java代码.难以理解.
刚一朋友问了我一道关于java的问题,是这样的:要求用户输入一个字符("a" 或“b”),当用户输入后,程序根据用户输入给一个相应的提示。它的代码如下:

package input;
public class yijian
{ public static void main()
throws Exception
{
char a;
System.out.print("请输入一个字符: ");
a=(char)System.in.read();
switch(a)/*根据输入的不同值给一个相应的提示,当然,
每输入一次,程序将给一个提示*/
{
case 'a':
System.out.println("你输入了A");
break;
case 'b':
System.out.println("你输入了B");
break;
default :
System.out.println("你选择了其它字符");
}

}
}

毫无疑问,这段代码是正确的。
这段代码是这样工作的:当用户输入"a"或"b"时,程序提示你输入了相应的字符,当输入其它字符时,程序输出:"你选择了其它字符"
但他把问题改了一下:
要求用户输入一个字符,当用户输入之后,程序给出相应的提示后,又要求用户继续输入,直到用户输入“q"时才结束。
对此,他用了do while循环,程序代码如下:

package input;
public class yijian
{ public static void main()
throws Exception
{
char a;
do
{
System.out.print("请输入一个字符: ");
a=(char)System.in.read();
switch(a)/*根据输入的不同值给一个相应的提示,当然,
每输入一次,程序将给一个提示*/
{
case 'a':
System.out.println("你输入了A");
break;
case 'b':
System.out.println("你输入了B");
break;
default :
System.out.println("你选择了其它字符");
}
}while (a!='q');

}
}


这段代码看起来也没有什么问题,但一运行,问题就来了。
程序首先提示我输入一个字符,我便输入了 a
但它的输出却是:
请输入一个字符: a
你输入了A
请输入一个字符: 你选择了其它字符
请输入一个字符: 你选择了其它字符
请输入一个字符:

如果你又输入了R
则输出是这样的:
请输入一个字符: a
你输入了A
请输入一个字符: 你选择了其它字符
请输入一个字符: 你选择了其它字符
请输入一个字符: R
你选择了其它字符
请输入一个字符: 你选择了其它字符
请输入一个字符: 你选择了其它字符
请输入一个字符:

由上面输出所知,程序的循环体是被执行了三次,但程序的代码中没有体现每次执行循环体要被执行三次呀!
这些代码在java虚拟机上运行的,为了检验,我特意将它复制到Microsoft Visual J#.NET中运行,居然也得出同样的结果!
我也不知道这其中的奥妙是什么,
请高手指点。

艾。。
搜索更多相关主题的帖子: java class 代码 DIV 
2005-12-14 23:16
seas110
Rank: 1
等 级:新手上路
帖 子:68
专家分:0
注 册:2005-4-27
收藏
得分:0 

除了读a字符,还读了回车,换行符,所以会有这样的结果.

2005-12-15 15:39
gameovercn
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2005-10-25
收藏
得分:0 
循环结构的问题,只把switch放到循环体内,就可以了

中国!!!你别玩了!!! 我昨天做梦了,我成了个框架师,哈哈
2005-12-19 13:47
bagger
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:33
帖 子:891
专家分:0
注 册:2005-8-16
收藏
得分:0 
一下子读了三个字符,'a','\r','\n'所以会出现这种情况

【三元毕业设计论文】
三元论文真的只有三元钱
客服QQ:742670649
http://shop35094218./
2005-12-19 18:05
快速回复:〖求助〗java代码.难以理解.
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013802 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved