实现用户输入

java中大多是通过定义输入/输出流对象来实现数据的输入输出的。但同时也需要通过键盘获得用户的输入。java提供java.util.Scanner类,可以直接接受控制台命令行的输入。

使用System.in获得用户输入

java提供了System.in、System.out、System.err类。System.out是一个已经预先处理过的,被包装成PrintStream的对象。和System.out一样,System.err也是一个PrintStream.但是System.in就不是了,他是一个未经处理的InputStream。下面例子使用System.in获取用户键盘上的输入。代码如下:

import java.io.*;

public class ReadKeyBroadDemo {
public static void main(String args[])throwsIOException{
    int a;
    System.out.print("请输入一个字符");
    a=(char)System.in.read(); //获取键盘中输入并存入变量a中
            System.out.print("你输入的字符是:"+a);
    
}

}

read()方法被定义为抽像方法,主要是为了继承InputStream类的子类可以针对不同的外部设备定义不同的read()方法,另外,java规定read()必须配合异常处理机制来使用。

使用Scanner类获得用户输入

java.util.Scanner类是JDK新增的一个类,可使用该类创建一个从命令行读取数据的对象,而不必再进行流的转换。Scanner类使用如下:

Scanner reader=new Scanner(System.in)

然后reader对象调用下列方法,读取用户在命令行输入的各种数据类型:next.Byte()、nextDouble()、nextFlaot();nextInt();nextLine();nextLong();nextShort().这些方法在执行时都要等待用户在命令行输入数据按回车键确认。写一个程序,使用Scanner类获取用户输入,并计算输入值的和。代码如下:

import java.util.*;
public class ReadKeybroadDemo2 {
    public static void main(String []args){
        System.out.println("请输入若干个数,每输入一个数按回车键确定");
        System.out.println("最后输入一个非数字结束输入操作");
        //创建读取命令行内容的Scanner对象
        Scanner reader=new Scanner(System.in);
        Double sum=(double) 0;
        int m=0;
        while(reader.hasNextDouble()){           //如果持续读入数据
         double x=reader.nextDouble();
         m=m+1;
         sum=sum+x;
        }
        System.out.println(m+"个数的和为:"+sum);
        System.out.println(m+"个数的平均值为:"+sum/m);
        }

}

在这个程序中,创建一个Scanner类的对象reader,用来读取命令行的输入内容。通过reader对象的hasNextDouble()方法,来判断是否还有后续的double类型的输入内容。如果有,通过nextDouble()方法,将读入的字符串转换成小数,并累加到变量sum上。程序最后输出sum的值和平均值。

原文地址:https://www.cnblogs.com/Angella/p/6081111.html