Java中的Scanner类的用法以及其他获取键盘输入的方法

时间:2022-11-26 14:40:25

在Java5中新添加的java.util.Scanner类,是一个用于扫描输入文本的应用程序,可以结合使用正则表达式和从输入流中检索特定类型数据项的方法,而除了使用正则表达式,还可以对字符串和基本数据类型进行分析。最主要的功能就是获取控制台输入。


例如:package com.ab.string;
  import java.util.Scanner;
  public class string{
  public static void main(String args[]){
System.out.println("请输入若干个数,每输入一个数用回车确认");
System.out.println("最后输入一个非数字结束输入操作");
Scanner reader=new Scanner(System.in);
double sum=0;
int m=0;
while(reader.hasNextFloat()){
double x=reader.nextFloat();
m=m+1;
sum=sum+x;
}
System.out.println(m+"个数的和为"+sum);
System.out.println(m+"个数的平均值是"+sum/m);
}
}

这个程序可以求出输入的数之和以及平均值,通过Scanner方法读入,值得一提的是read可以调用不同的函数来输入不同的数据类型(例如nextByte,nextInt,nextFloat,nextDouble等等),只能同时使用一种数据类型。

不过要注意的是Scanner类中有nextLine()和next(),两者是有区别的,区别在于nextLine()可以读取换行符,而next()不可以。


Scanner类可以说是Java中获取键盘输入的最强大的一种方式,除了Scanner类的方式之外,还有两种不常用的方式:

1>System.in.read();

这种方法可以从控制台获取一个字符并输出,但是缺点就在于只能就接收单个字符,无法接收字符串,若是要转换为数字的话还要进行强制转化,因此显得比较麻烦

2>BufferedReader()类和InputStreamReader()类

这种方法可以从控制台获得一个字符串并输出,下面是一个例子:

public static void main(String [] args) throws IOException{ 

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

           String str = null; 

           System.out.println("Enter your value:"); 

           str = br.readLine(); 

           System.out.println("your value is :"+str); 

}