Java比较两个数字的大小 两个参数由键盘输入

Java比较两个数字的大小两个参数由键盘输入,请用Systems.in.read()语句写出来谢谢第一个答案好像有点问题,while(b==-1||b==13||b==1... Java比较两个数字的大小 两个参数由键盘输入 ,请用Systems.in.read()语句写出来 谢谢
第一个答案好像有点问题,while(b==-1||b==13||b==10); 这是什么意思 而且运行后也有点问题
展开
 我来答
雪飞潇潇
推荐于2017-09-28 · TA获得超过6273个赞
知道大有可为答主
回答量:1968
采纳率:91%
帮助的人:842万
展开全部

java 从键盘输入2个数字,比较大小

一:使用Systems.in.read()方法来写

首先分析,System.in.read()方法,该方法从键盘读入一个字符,然后返回它的ASCII码。

  •     需要解决的问题: 1. 返回的是ASCII码,需要转成数字

	int x =System.in.read();//如果输入1
System.out.println(x);//这里输出1的ASCII码49
System.out.println((char)x);//转换成字符1
  •     需要解决的问题:2 如果输入回车,那么系统会返回13 和 10

int x =System.in.read();
int y =System.in.read();
System.out.println(x+"\t"+y);//输出13 10

因为:我们敲击键盘的回车,比较特殊,对于该方法而言:

相当于输入了两次

第1次时读到的字符其实是回车符\r-->转成ASCII码---->13

第2次接受到的是换行符\n-->转成ASCII码---->10

	System.out.println((int)'\r');//13
System.out.println((int)'\n');//10
  •    需要解决的问题:3 使用方法一次只能获得一个字符,输入123 回车,得到的只是1

我们不清楚,用户输入的时候,到底要输入几位数字,那么需要使用死循环来读取。什么时候跳出循环?很简单,前面说了,读取回车代表的字符13 就可以退出循环了。


完善后的代码

import java.io.IOException;
public class Test {
public static void main(String[] args) throws IOException {
System.out.println("请输入第一个数字");
double a = getNum();//调用方法读取第一个数字
System.out.println("请输入第二个数字");
double b = getNum();//读取第二个数字

if(a>b){
System.out.println(a+">"+b);
}else if(a<b){
System.out.println(a+"<"+b);
}else{
System.out.println(a+"="+b);
}
}
        //该方法用System.in.read()来读取数字
public static double getNum() throws IOException {
String x = "";//定义一个字符串,用于拼接用户的输入
while (true) {
int a = System.in.read();
if (a == 13) {//如果是回车符就跳出循环
break;
}
x += (char) a;//拼接有效的输入
}
return Double.parseDouble(x);//从字符串转换到浮点数字
}
}

运行测试

请输入第一个数字
12.5
请输入第二个数字
52.1
12.5<52.1


拓展:从上面可以看出 直接使用System.in.read() 来读取用户的输入,是相当的麻烦。

所以,平常我们利用IO知识, 使用其他流来包装这个底层的流,方便我们读取

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Test2 {
public static void main(String[] args) throws Exception {
//BufferedReader从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。 
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String x = br.readLine();//每次读取一行,自动摒弃回车符和换行符
double a = Double.parseDouble(x);//
System.out.println(a);
}
}

当然,还有更简单的,就是利用Scanner扫描器类来实现读取 这也是最常用的方式

import java.util.Scanner;
public class Test3 {
public static void main(String[] args)  {
Scanner input = new Scanner(System.in);
double a = input.nextDouble();
}
}
ZX2050
推荐于2017-10-02 · TA获得超过184个赞
知道小有建树答主
回答量:83
采纳率:0%
帮助的人:111万
展开全部
import java.io.IOException;
public class Main {
public static void main(String[] args) {
int a=0,b=0;
try {
do{
System.out.println("请输入第1个数");
a = System.in.read();
}while(a==-1||a==13||a==10);

do{
System.out.println("请输入第2个数");
b=System.in.read();
}while(b==-1||b==13||b==10);
System.out.println("b="+b);
if(a<b){
int t=a;a=b;b=t;

}
System.out.println("大数为"+a);
System.out.println("小数为"+b);
} catch (IOException ex) {
System.out.println("输入异常");
}

}

}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式