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 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();
}
}
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 int t=a;a=b;b=t;
}
System.out.println("大数为"+a);
System.out.println("小数为"+b);
} catch (IOException ex) {
System.out.println("输入异常");
}
}
}