a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 95|回复: 0

[专业语言] JAVA认证:Java如何从控制台中读取数据方法

[复制链接]
发表于 2012-8-4 12:44:44 | 显示全部楼层 |阅读模式
0 引言  f  u, H8 Z* M& }% F% r2 Y
    从控制台中读取数据是一个比较常用的功能,在 JDK 5.0 以前的版本中的实现是比较复杂的,需要手工处理系统的输入流。有意思的是,从 JDK 5.0 版本开始,能从控制台中输入数据的方法每增加一个版本号,就有一种新增的方法,这也增加了选择的种类,可以依据不同的要求来进行选择。下面来看一下,各个版本中如何从控制台中读取数据以及各自的优缺点。5 ]4 `7 L4 }; m0 n9 K' T
    1 JDK 1.4 及以下版本读取的方法1 X4 o' O, D1 o: y( @
    JDK 1.4 及以下的版本中要想从控制台中输入数据只有一种办法,即使用System.in获得系统的输入流,再桥接至字符流从字符流中读入数据。示例代码如下:
# q" Z0 O) g$ U& |( L, @    import java.io.IOException;/ [! @7 r/ C2 Q; }- A
    import java.io.InputStreamReader;
( |( P9 \; l9 ~; |$ \' F' l; B4 s    public class Test1 {$ I/ C9 U+ ]4 [$ g6 ]$ x1 R3 T
    public static void main(String[] args) {0 e" ^8 E2 m' ^' A; ?7 T& Z7 Z/ j
    String str = readString("请输入字符串:");* C" Z+ @; D5 d' \8 k+ j
    System.out.println("readString 方法的输入:" + str);
, T) r( @2 G9 \    }
# ?: ]% `' ?. i0 q    /*** T7 d( j5 V$ M6 ]- g9 {
    * 使用系统的输入流,从控制台中读取数据1 y8 [/ t  P4 j! E6 l7 I

( X3 q; r8 t; a( u- q( a    * 用于所用的JDK版本5 F1 i# \8 ?7 q9 J
    * @param prompt 提示信息9 i8 K& D5 Y- i- t/ ^
    * @return 输入的字符串
9 a8 L4 ?4 _# w* r. `% ]    */
* y! p# m0 X( _3 b    private static String readString(String prompt) {  J3 M9 E5 k. W' y
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));0 [4 C0 m0 s/ S
    String str = null;
7 v& O, A% _5 C0 r$ U% w    try {
7 }" a* O1 U: S, g8 P" g    System.out.print(prompt);
* S4 l3 z+ K& q6 d: I    str = br.readLine();
3 J, f7 {& K% H6 f0 d; L9 ]    } catch (IOException e) {
4 H( g" v7 h/ W" |7 K    e.printStackTrace();( @6 M3 Z( ~6 `' H/ |
    }
/ e9 |# |2 }8 }% V$ v; ?5 L    return str;
( v4 R" @1 M, j6 o9 C6 u" N1 w/ [    }
: r0 U1 x7 F  c5 W. Y  I( w$ s+ \2 R$ J    }; r, ]5 `+ N$ ~6 u  U
    从上面的代码段来看,这种控制台输入的方法非常地麻烦,为了能读取整行的数据,采用了BufferedReader类来进行处理,而且在读取的过程中还需要捕获IOException.不过这是 JDK 1.4 及以下版本中从控制台读取数据唯一的办法。还有一种非控制台读入数据的办法,就是采用 Swing 中的JOptionPane,会弹出一个非常漂亮的输入对话框让使用者输入数据,但这是一种比较另类的做法,不推荐使用。
5 K7 q7 a7 ]) a; F    import javax.swing.JOptionPane;1 u# v5 ~. P7 S- [1 q- J! p( O
    public class Test2 {
" `# P+ }# w1 B! g- h    public static void main(String[] args) {
- S; J/ m1 w1 L. ]    String str = readStringFromDialog("请输入字符串:");
$ i% S* f' t9 x3 x6 C  r    System.out.println("readStringFromDialog 方法的输入:" + str);
' q0 ~- p( m: R+ a! |) D1 K    }" `0 w" l0 |- W3 P
    /**
% n+ a5 {7 R; Y1 m5 u/ h/ g6 b0 N    * 使用JOptionPane的输入对话框,输入字符串* u, `5 C* C- _9 s( [3 J* y( }
: y* i# I  Y9 d# T$ I# [* X& t1 _2 ?
    * 用于所用的JDK版本
& x& M& X: u' M0 n$ N4 M; D& h    * @param prompt 提示信息0 }( V9 W: ~$ }3 _
    * @return 输入的字符串% t- \* b1 F$ y: w9 C
    */* R6 [, J+ P* R3 E4 H( i# i# v
    private static String readStringFromDialog(String prompt) {( _& n  G9 \) r6 A4 Z+ ^4 H
    return JOptionPane.showInputDialog(prompt);- n9 n7 \& K7 T, p% d1 v# Y. W
    }
" R; K/ x6 _/ x2 q: F$ s    }
4 O' z& w. h6 `- b9 ?; H    上面的两种方法都有个共同的缺点--只能读取字符串,若需要读取其他类型的数据需要手工进行转换。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-7 04:25 , Processed in 0.418137 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表