[Java学习]Java的两种不同的键盘输入方法

1,435 阅读2分钟

对于Java的初学者来说,比较难的就是要记住Java的两种不同的键盘输入方法,而程序设计中经常需要从键盘上读取数据。下面对两种不同的方法做介绍:

1、第一种输入方式

import java.io.*;
public class Main {

    public static void main(String[] args)throws IOException {
    
        String str;  //声明str为String类型变量
        InputStreamReader inp;  //声明inp为InputStreamReader类的变量,该类在java.io.*中
        inp=new InputStreamReader(System.in);  //创建inp对象
        BufferedReader buf;  //声明buf为BufferedReader类的变量,该类在java.io.*中
        buf=new BufferedReader(inp);  //创建buf对象

        str=buf.readLine();  //用readLine()方法读入字符串存入str中,且须处理IOException异常

    }
}

或者可以写成

import java.io.*;
public class Main {
    public static void main(String[] args)throws IOException {
    
        String str;   //声明str为String类型变量
        BufferedReader buf;  //声明buf为BufferedReader类的变量,该类在java.io.*中
        buf=new BufferedReader(new InputStreamReader(System.in));  //创建buf对象
       
        str=buf.readLine();  //用readLine()方法读入字符串存入str中,且须处理IOException异常
    }
    
}
    

显然第二种写法要精简许多

【要点】

(1)须处理IOException异常,即要在函数后加上throws IOException

(2)用readLine();格式的键盘输入数据,不管是文字还是数据,皆视为字符串,因此要由键盘输入数值则需要利用以下方法进行相应的转换。

  • 转换的方法

Byte.parseByte(String s) //字符串转字节型数据

Short.parseShort(String s) //字符串转短整型数据

Integer.parseInt(String s) //字符串转整型数据

Long.parseLong(String s) //字符串转长整型数据

Float.parseFloat(String s) //字符串转浮点型数据

Double.parseDouble(String s) //字符串转双精度型数据

Boolean.parseBoolean(String s) //字符串转布尔型数据

  • 举例:字符串转浮点型数据
import java.io.*;
public class Main {

    public static void main(String[] args)throws IOException {
        float num;
        String str;
        BufferedReader buf;
        buf=new BufferedReader(new InputStreamReader(System.in));

        System.out.print("请输入一个实数:");
        str=buf.readLine();
        num=Float.parseFloat(str);
        System.out.println("您输入的实数为:"+num);
        
    }
}

运行结果:

请输入一个实数:32.58
您输入的实数为:32.58

(3)需要输入多个数据时,仅需定义多个变量保存readLine()方法获得的字符串即可。如:

float num1,num2;
String str1,str2;
...
str1=buf.readLine();
num1=Float.parseFloat(str1);

str2=buf.readLine();
num2=Float.parseFloat(str2);

2、第二种输入方式

在java.util库中增设了一个专门用于输入操作的类Scanner。语句格式如下:

import java.util.*;
public class Main {
    public static void main(String[] args) {
        
        Scanner reader=new Scanner(System.in);
        double num;
        
        num=reader.nextDouble();
    }
}

类似的读取调用函数还有:nextByte()nextDouble()nextFloat()nextInt()nextLong()nextShort()next()nextLine()

其中next()方法一定要读取到有效字符才可以结束输入,有效字符前的空格、Tab或者回车都会被自动去掉,只有在有效字符输入了之后,才会将空格、Tab或者回车当作为结束输入。

nextLine()是能将回车作为结束输入。