博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 输入
阅读量:6412 次
发布时间:2019-06-23

本文共 4307 字,大约阅读时间需要 14 分钟。

hot3.png

读取控制台输入

Java 的控制台输入由 System.in 完成。

为了获得一个绑定到控制台的字符流,你可以把 System.in 包装在一个 BufferedReader 对象中来创建一个字符流。

下面是创建 BufferedReader 的基本语法:

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

BufferedReader 对象创建后,我们便可以使用 read() 方法从控制台读取一个字符,或者用 readLine() 方法读取一个字符串。

从控制台读取多字符输入

从 BufferedReader 对象读取一个字符要使用 read() 方法,它的语法如下:

int read( ) throws IOException

每次调用 read() 方法,它从输入流读取一个字符并把该字符作为整数值返回。 当流结束的时候返回 -1。该方法抛出 IOException。

下面的程序示范了用 read() 方法从控制台不断读取字符直到用户输入 "q"。

//使用 BufferedReader 在控制台读取字符import java.io.*;public class BRRead {	public static void main(String args[]) throws IOException {		char c;		// 使用 System.in 创建 BufferedReader		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));		System.out.println("输入字符, 按下 'q' 键退出。");		// 读取字符		do {			c = (char) br.read();			System.out.println(c);		} while (c != 'q');	}}

205703_ZDje_2885163.png

从控制台读取字符串

从标准输入读取一个字符串需要使用 BufferedReader 的 readLine() 方法。

它的一般格式是:

String readLine( ) throws IOException

下面的程序读取和显示字符行直到你输入了单词"end"。

BRReadLines.java 文件代码:

//使用 BufferedReader 在控制台读取字符import java.io.*;public class BRReadLines {	public static void main(String args[]) throws IOException {		// 使用 System.in 创建 BufferedReader		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));		String str;		System.out.println("Enter lines of text.");		System.out.println("Enter 'end' to quit.");		str = br.readLine();		System.out.println(str);	}}

以上实例编译运行结果如下:

210553_VhA0_2885163.png

JDK 5 后的版本我们也可以使用  类来获取控制台的输入。

Java Scanner 类

java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入。

下面是创建 Scanner 对象的基本语法:

Scanner s = new Scanner(System.in);

接下来我们演示一个最简单的的数据输入,并通过 Scanner 类的 next() 与 nextLine() 方法获取输入的字符串,在读取前我们一般需要 使用 hasNext 与 hasNextLine 判断是否还有输入的数据:

import java.util.Scanner;  public class ScannerDemo {      public static void main(String[] args) {          Scanner scan = new Scanner(System.in);     // 从键盘接收数据       //next方式接收字符串        System.out.println("next方式接收:");        // 判断是否还有输入        if(scan.hasNext()){             String str1 = scan.next();          System.out.println("输入的数据为:"+str1);          }       }  }

213617_ICF7_2885163.png

可以看到你好世界字符串并未输出,接下来我们看 nextLine。

使用 nextLine 方法:

import java.util.Scanner;  public class ScannerDemo {      public static void main(String[] args) {          Scanner scan = new Scanner(System.in);     // 从键盘接收数据       //nextLine方式接收字符串        System.out.println("nextLine方式接收:");        // 判断是否还有输入        if(scan.hasNextLine()){             String str2 = scan.nextLine();          System.out.println("输入的数据为:"+str2);          }       }  }

213837_W25m_2885163.png

可以看到 你好世界 字符串输出。

next() 与 nextLine() 区别

next():

  • 1、一定要读取到有效字符后才可以结束输入。
  • 2、对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。
  • 3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
  • next() 不能得到带有空格的字符串。

nextLine():

  • 1、以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
  • 2、可以获得空白。

如果要输入 int 或 float 类型的数据,在 Scanner 类中也有支持,但是在输入之前最好先使用 hasNextXxx() 方法进行验证,再使用 nextXxx() 来读取:

import java.util.Scanner;   public class ScannerDemo {      public static void main(String[] args) {          Scanner scan = new Scanner(System.in);      // 从键盘接收数据          int i = 0 ;          float f = 0.0f ;          System.out.print("输入整数:");          if(scan.hasNextInt()){                       // 判断输入的是否是整数              i = scan.nextInt() ;                      // 接收整数              System.out.println("整数数据:" + i) ;          }else{                                       // 输入错误的信息              System.out.println("输入的不是整数!") ;          }          System.out.print("输入小数:");          if(scan.hasNextFloat()){                    // 判断输入的是否是小数              f = scan.nextFloat() ;                   // 接收小数              System.out.println("小数数据:" + f) ;          }else{                                      // 输入错误的信息              System.out.println("输入的不是小数!") ;          }      }  }

214228_vTNx_2885163.png

以下实例我们可以输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果:

import java.util.Scanner;  class ScannerDemo   {      public static void main(String[] args)       {          Scanner scan = new Scanner(System.in);            double sum = 0;          int m = 0;            while(scan.hasNextDouble())          {              double x = scan.nextDouble();              m = m + 1;              sum = sum + x;          }            System.out.println(m+"个数的和为"+sum);          System.out.println(m+"个数的平均值是"+(sum/m));      }  }

214454_dOy5_2885163.png

 

参考 来自-> 菜鸟教程

                               

转载于:https://my.oschina.net/zjllovecode/blog/1519564

你可能感兴趣的文章
给年轻工程师的十大忠告(转载)
查看>>
Java访问USB设备
查看>>
服务端 REST与页面兼容的URL设计
查看>>
servlet中的客户端和服务端跳转
查看>>
六、Python自动化运维入门(面向对象编程)
查看>>
linux下svn命令大全
查看>>
java数据库MySql以及SQL语句
查看>>
dom4j.Document 遍历节点信息
查看>>
推荐漂亮的flash网页MP3音乐播放器
查看>>
Nginx的TCP负载均衡介绍
查看>>
企业IM-3 InIOCP组件介绍-Client管理
查看>>
虚拟机中的Linux安装VMware Tools的方法
查看>>
JSP学习笔记(一)
查看>>
chromedriver@2.X.X install: `node install.js` 问题
查看>>
Android 来去电自动录音 (三)
查看>>
rpmbuild
查看>>
网络中均分负载流量
查看>>
OpenStack封装Windows镜像之Installing Cloudbase-Init
查看>>
Spring-基于Spring自定义标签
查看>>
Centos+iptables+l7-filter 封QQ MSN和P2P
查看>>