| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 511 人关注过本帖
标题:〖求助〗java代码.难以理解.
只看楼主 加入收藏
有空格
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2005-12-14
收藏
 问题点数:0 回复次数:4 
〖求助〗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中运行,居然也得出同样的结果!
我也不知道这其中的奥妙是什么,
请高手指点。

[此贴子已经被作者于2005-12-14 11:49:45编辑过]

搜索更多相关主题的帖子: java 代码 
2005-12-14 11:46
静夜思
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:济南的冬天
等 级:管理员
威 望:11
帖 子:8902
专家分:2567
注 册:2004-3-25
收藏
得分:0 
封你ID都有可能

畅所欲言
2005-12-14 12:02
layabout
Rank: 1
等 级:新手上路
帖 子:180
专家分:0
注 册:2005-12-2
收藏
得分:0 
为什么啊,给个理由先,2楼..

学习不难!难的是一辈子兢兢业业,老老实实,勤勤恳恳的学习!!!
2005-12-14 18:06
有空格
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2005-12-14
收藏
得分:0 
以下是引用静夜思在2005-12-14 12:02:00的发言:
封你ID都有可能


???我请教问题,管理员要封我ID?不懂。

2005-12-14 23:11
静夜思
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:济南的冬天
等 级:管理员
威 望:11
帖 子:8902
专家分:2567
注 册:2004-3-25
收藏
得分:0 

JAVA的帖子到C版块,对于学C的来说等于垃圾帖(即使很多现在学C的以后要学JAVA),如果楼主还不懂我只有封ID了,如果都象楼主这样哪里人气高就到哪里发帖子整个论坛非乱不可。


畅所欲言
2005-12-14 23:20
快速回复:〖求助〗java代码.难以理解.
数据加载中...
 
   



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

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