Java编程那些事儿89——读取控制台输入

11.3.2 读取控制台输入

前面介绍了使用IO类实现文件读写的示例,其实在很多地方还需要使用到IO类,这里再以读取控制台输入为例子来介绍IO类的使用。

控制台(Console)指无图形界面的程序,运行时显示或输入数据的位置,前面的介绍中可以使用System.out.println将需要输出的内容显示到控制台,本部分将介绍如何接受用户在控制台中的输入。

使用控制台输入是用户在程序运行时和程序进行交互的一种基础手段,这种手段是Windows操作系统出现以前,操作系统位于DOS时代时,用户和程序交互的主要手段。当然,现在这种交互的方式已经被图形界面(GUI)程序取代了。

在读取控制台操作中,操作系统在用户在控制台输入内容,并按回车键提交以后,将用户提交的内容传递给Java运行时系统,Java运行时系统将用户输入的信息构造成一个输入流对象——System.in,在程序员读取控制台输入时,只需要从该流中读取数据即可。至于构造流System.in的过程对于程序员来说是透明的。

查阅JDK API可以发现,System类中的静态属性in是InputStream类型的对象,可以按照输入流的读取方法读取即可。

下面的示例代码实现了输入“回显”的功能,即将用户输入的内容重新显示到控制台,示例代码如下:

/**

* 读取控制台输入,并将输入的内容显示到控制台

*/

public class ReadConsole1 {

 public static void main(String[] args) {

  try{

   //提示信息

   System.out.println("请输入:");

   //数组缓冲

   byte[] b = new byte[1024];

   //读取数据

   int n = System.in.read(b);

   //转换为字符串

   String s = new String(b,0,n);

   //回显内容

   System.out.println("输入内容为:" + s);

  }catch(Exception e){}

 }

}

在该示例代码中,从System.in中读取出用户的输入,然后将用户输入的内容转换为字符串s,然后输出该字符串的内容即可。

下面实现一个简单的逻辑,功能为:回显用户在控制台输入的内容,当用户输入quit时程序运行结束。实现的代码如下:

/**

* 读取控制台输入

* 循环回显内容,当输入quit时退出程序

*/

public class ReadConsole2 {

 public static void main(String[] args) {

  //数组缓冲

  byte[] b = new byte[1024];

  //有效数据个数

  int n = 0;

  try{

   while(true){

    //提示信息

    System.out.println("请输入:");

    //读取数据

    n = System.in.read(b);

    //转换为字符串

    String s = new String(b,0,n - 2);

    //判断是否是quit

    if(s.equalsIgnoreCase("quit")){

     break; //结束循环

    }

    //回显内容

    System.out.println("输入内容为:" + s);

   }

  }catch(Exception e){}

 }

}

时间: 2024-09-29 21:15:03

Java编程那些事儿89——读取控制台输入的相关文章

Java编程那些事儿97——多线程使用示例2

12.3.2 模拟网络数据发送 在实际的网络程序开发中,由于网络通讯一般都需要消耗时间,所以网络通讯的内容一般都启动专门的线程进行处理. 这样,在一个最简单的网络程序程序中,至少就包含了两个线程:处理界面绘制和接收用户输入的系统线程,以及至少一个网络通讯线程. 下面以一个简单的模拟程序,实现模拟网络数据的发送功能,关于更详细的网络编程中线程的使用,可以参看后续的网络编程章节. 在该示例代码中,用户在控制台输入需要发送的内容,程序接收到用户的输入以后,启动一个单独的线程进行网络通讯,然后用户可以继

Java编程那些事儿91——装饰流使用2

11.3.3.2 BufferedReader/BufferedWriter 在进行IO操作时,除了功能以外,程序的执行效率也是必须要考虑的问题.基本的IO类只是注重功能的实现,例如将特定的数据源转换为流对象,而没有过多的关注读写的效率问题,而实际在进行项目开发时,读写效率也是必须要考虑的问题. 为了提高IO类的读写效率,在装饰流中专门制作了一类缓冲流,该类流的作用就是提高流的读写效率,这组缓冲流包含:BufferedInputStream/BufferedOutputStream.Buffer

Java编程那些事儿52—方法声明

第七章 方法 方法(method),在面向过程的语言中称作函数(function),在汇编语言中称作子程序,是一个代码功能块,实现某个特定的功能.在实际的程序开发中,方法是一种基础的组织代码的方式.本部分就介绍方法相关的概念.相关语法以及实际使用时需要注意的问题. 7.1 方法概述 方法的概念来源于数学上的函数,在数学中,当数据具有一定的规律时,就是用一个函数来代码该数字的规律,例如f(n)=n则代表1.2.3.--这样的一个数列.在数学上n是参数,对于确定的n值只有一个f(n)的值和它对应.

Java编程那些事儿25—位运算符

4.5 二进制运算符 由于计算机内部的数据都以二进制的形式存在,所以在Java语言中提供了直接操作二进制的运算符,这就是下面要讲解的位运算符和移位运算符. 使用二进制的运算符,可以直接在二进制的基础上对数字进行操作,执行的效率比一般的数学运算符高的多,该类运算符大量适用于网络编程.硬件编程等领域. 二进制运算符在数学上的意义比较有限. 在Java代码中,直接书写和输出的数值默认是十进制,Java代码中无法直接书写二进制数值,但是可以书写八进制和十六进制数字,八进制以数字0开头,例如016,十六进

Java编程那些事儿3——你适合学习程序设计吗?

 Java编程那些事儿3--你适合学习程序设计吗?作者:陈跃峰出自:http://blog.111cn.net/mailbomb          程序设计是一个技术活,所以不是适合所有的人.现在很多人听说程序设计人员待遇如何如何的好,都一窝蜂的来学习程序,其实这个现象很不正常,因为程序不一定适合你.其实对于一个人来说,适合你的才是最好的.         就像现在很多小孩子都被家长逼着去学钢琴啊什么,有些小孩根本没有艺术细胞的,所以学习的效果就是差强人意了.         其实程序设计最需要

Java编程那些事儿4——如何学好程序设计?

  Java编程那些事儿4--如何学好程序设计?作者:陈跃峰出自:http://blog.111cn.net/mailbomb          俗话说"兴趣是最好的老师",但是只靠兴趣是远远不够的,还需要付出艰辛的努力.程序设计是一种技能,需要在较短的时间内学会,就不能像学习汉语一样,通过十几年甚至更长的时间来学好,也不能像英语那样进行业余学习,以至很多大学毕业的人英语水平也不敢恭维,也达不到实用的程度.         那么如何学好程序设计呢?或者更现实一点,如何在短时间内成为一个

Java编程那些事儿1——序言

 序言          从大学毕业到现在,马上就六年了,这六年中从事过开发,也从事培训工作,相比而言,参加培训工作的时间要长一些.由于工作的特点,遇到了各种各样的学生,在学习编程时遇到了一系列的问题,也有很多迷茫的时候,希望通过编写本书,把相关的问题进行一下总结,把自己的经验和大家进行分享.当然由于一些知识也只是个人见解,也希望大家积极指正,帮助编程的初学者,以及程序开发人员深刻理解基础的概念,更好的学习编程和从事开发工作.         编写一本书,总要有个名字吧,姑且把书名叫做<Java

Java编程那些事儿84——IO简介

第十一章 I/O处理 I/O(Input/Output)是输入和输出的简称,在Java语言中所有和输入输出有关的都属于IO处理技术,例如包含文件的读写和网络数据的发送等. 其实整个计算机实现功能时最主要的就是IO,用户使用鼠标.键盘等输入设备向程序输入数据,程序进行一定的逻辑处理,然后再将处理结果以一定的形式显示到显示器等输出设备上. I/O处理技术是Java语言中实现文件操作.内存操作.控制台输入以及网络编程的基础,但是由于I/O技术本身的设计原因,也使得I/O处理技术的难度比较大,需要花费比

Java编程那些事儿96——多线程使用示例1

12.3 多线程使用示例 多线程技术对于初学者来说,是编程思维的一种跳跃,在实际学习时,一定要熟悉线程的基础知识,掌握线程的实现方式,然后就是开始大量的进行实践,从实践中领悟线程编程的奥妙以及实现的原理. 下面通过几个常见的例子演示多线程的基本使用. 12.3.1 定时炸弹 定时炸弹是在电影中常见的一种装置,在该部分就使用多线程技术模拟该功能.实现的功能为:在程序启动以后进行倒计时,当60秒以后程序结束,在程序运行时可以在控制台输入quit控制线程(炸弹)的暂停. 在该示例程序中,开启了一个系统