java 输入控制_java控制台输入输出详解

初学java时,或许大家都遇到过一个问题,从控制台获取字符,大家最常见的便是通过System.in.read();取得输入的字符,代码如下:

public static void receiveOneChar(){//得到一个输入的字符

char ch='2';

System.out.println("please enter a number:");

try {

ch=(char)System.in.read();

} catch (IOException e) {

e.printStackTrace();

}

System.out.println("your entered char is:"+ch);

}

但是该方法只能获得一个输入的字符,为了获得更多的输入字符,或者要实现a,b相加我们该如何实现呢?看下面:

我们知道,java中是以流进行输入输入的,其中System类管理基本输入输出流和错误流,

System.out 将流输出到缺省位置

System.in 获得输入

System.err 输出错误信息

每当main方法被执行时,系统会自动生成上述三各对象;

基本输入流InputStream是个抽象类,它有如下方法供子类继承:

read(); 从流中读入数据;

skip();跳过流中若干各字节;

available();返回流中可用字节数;

mark();在流中标记一个位置;

reset();返回标记的位置;

markSupport();是否支持标记和复位操作;

close();关闭流;

其中,read()方法有三个版本;

int read();读一个整数;

int read(byte[] b);读多个字节到一个字节数组;

int read(byte[] b,int off,int len);从字节数组的某各位置读取len长度的字节;

下面的程序利用int read(byte[] b);实现从控制台读取多个字符;

public static void receiveSomeChar(){//通过字节数组得到输入

byte btArray[]=new byte[128];

System.out.println("please Enter

something:");

try {

System.in.read(btArray);

} catch (IOException e) {

e.printStackTrace();

}

System.out.println("your entering is:"+new

String(btArray));//由字节数组构造String

}

下面通过BufferedReader,InputStreamReader来获得控制台输入;

public static void

receiveSomeCharByBufferedReader(){

System.out.println("please Enter something:");

InputStreamReader in=null;

BufferedReader br=null;

in=new

InputStreamReader(System.in);//该处的System.in是各InputSream类型的;

br=new BufferedReader(in);

String str="";

try {

str =

br.readLine();//从输入流in中读入一行,并将读取的值赋值给字符串变量str

} catch (IOException e) {

e.printStackTrace();

}

System.out.println("your Entered is

:"+str);

}

好了,有了上面的基础,我们来实现c语言中常见的输入两个整数,输出两者的和的问题,也就是上面说的a+b的问题;

且看下面的代码:

public static void twoIntAdd(){

int one=0;

int two=0;

String temp=null;

System.out.println("please enter the first

integer:");

try {

BufferedReader br1=new

BufferedReader(new InputStreamReader(System.in));

temp=br1.readLine();

one=Integer.parseInt(temp);

System.out.println("please

enter the second integer:");

BufferedReader br2=new

BufferedReader(new InputStreamReader(System.in));

temp=br2.readLine();

two=Integer.parseInt(temp);

} catch (IOException e)

{

e.printStackTrace();

}

System.out.println(one+"+"+two+"="+(one+two));

}

因为时间关系,没有对输入进行验证,一旦输入数据类型不对,整个程序将会出错,细致入微的态度做程序时应该牢记。这里暂且就不验证了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值