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 展开
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 展开
7个回答
展开全部
你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);
这样会解决问题。
展开全部
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);
第一次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);
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
比较三个数,你的方法太复杂了。
简单的方法就是引入一个变量,先存两个变量的最大值,然后再拿这个变量和第三个变量比较。
或者用Math类中max方法来实现。
简单的方法就是引入一个变量,先存两个变量的最大值,然后再拿这个变量和第三个变量比较。
或者用Math类中max方法来实现。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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());其他类似;
int b=(int)System.in.read();
int c=(int)System.in.read();
你这个是将char '1'按照ASCⅡ转换为49,应该变为 int a=Interger.parseInt(System.in.read());其他类似;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
啊a<b的可能里面包含
a<c,b<c,a>c,b>c
a<c,b<c,a>c,b>c
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询