java 比较三个数大小

classcompare2{publicstaticvoidmain(String[]args)throwsjava.io.IOException{System.out.... class compare2{
public static void main(String[] args)throws java.io.IOException{
System.out.println("Please enter three numbers:\n");
int a=(int)System.in.read();
int b=(int)System.in.read();
int c=(int)System.in.read();
if(a<b){
if(b<c){
System.out.println("a<b<c");
}else if(c<a){
System.out.println("c<a<b");
}else{
System.out.println("a<c<b");
}
}else if(a>b){
if(b>c){
System.out.println("a>b>c");
}else if(c>a){
System.out.println("c>a>b");
}else{
System.out.println("a>c>b");
}
}
}
}
我是新手,请问为什么不能输出正确的结果
为什么会这个样子?
Please enter three numbers:
1 2 3
c>a>b
a=49
b=32
c=50
展开
 我来答
笨鸟一只只
2010-09-04 · TA获得超过153个赞
知道小有建树答主
回答量:277
采纳率:0%
帮助的人:99.9万
展开全部

你debug一下,会发现你输入  1 2 3后,得到的a、b、c之并不是1、2、3,我debug几次结果都不一样

我觉得你的问题是出在System.in.read()上,你并没有得到你预期输入的值,而不是出现在逻辑判断上,

建议用

BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); 

int a=Integer.parseInt( in.readLine());

int b=Integer.parseInt( in.readLine());

int c=Integer.parseInt( in.readLine());

    System.out.println("a="+a+"    b="+b+"   c="+c);

这样会解决问题。

tespo
推荐于2017-10-15 · TA获得超过250个赞
知道答主
回答量:236
采纳率:0%
帮助的人:220万
展开全部
1.
第一次read,得'1'(ASCII码49)
第二次read,得' '(ASCII码32),而并不是'2'
第三次read,得'2'(ASCII码50)

所以如果一定要用System.in.read()的话,读入数据的部分应改为
a=(int)System.in.read();
System.in.read();
b=(int)System.in.read();
System.in.read();
c=(int)System.in.read();

最好还是用java.util.Scanner类:
//import java.util.*;
Scanner s=new Scanner(System.in);
a=s.nextInt();
b=s.nextInt();
c=s.nextInt();

2.
String s="";
if(a<b){
if(b<c) s="c>b>a";
else{
if(c<a) s="b>a>c";
else s="b>c>a";
}
}
else{
if(c<a) s="a>c>b";
else{
if(b>c) s="b>c>a";
else s="c>a>b";
}
}
System.out.println(s);
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
快乐编程教育
2010-09-04 · 专业IT知识分享,编程技巧分享
快乐编程教育
采纳数:342 获赞数:812

向TA提问 私信TA
展开全部
比较三个数,你的方法太复杂了。
简单的方法就是引入一个变量,先存两个变量的最大值,然后再拿这个变量和第三个变量比较。
或者用Math类中max方法来实现。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gongyonghui2
2010-09-11
知道答主
回答量:40
采纳率:0%
帮助的人:21.9万
展开全部
int a=(int)System.in.read();
int b=(int)System.in.read();
int c=(int)System.in.read();
你这个是将char '1'按照ASCⅡ转换为49,应该变为 int a=Interger.parseInt(System.in.read());其他类似;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zuoro803
2010-09-04 · TA获得超过202个赞
知道小有建树答主
回答量:330
采纳率:0%
帮助的人:146万
展开全部
啊a<b的可能里面包含
a<c,b<c,a>c,b>c
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式