a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 118|回复: 0

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

[复制链接]
发表于 2012-8-4 12:44:44 | 显示全部楼层 |阅读模式
0 引言
% Z7 |9 E7 d6 g9 O0 B& B, x    从控制台中读取数据是一个比较常用的功能,在 JDK 5.0 以前的版本中的实现是比较复杂的,需要手工处理系统的输入流。有意思的是,从 JDK 5.0 版本开始,能从控制台中输入数据的方法每增加一个版本号,就有一种新增的方法,这也增加了选择的种类,可以依据不同的要求来进行选择。下面来看一下,各个版本中如何从控制台中读取数据以及各自的优缺点。
8 S# n1 b, z: e3 z, C" n& d    1 JDK 1.4 及以下版本读取的方法, T0 E" X5 I8 Y3 ]: x) p2 h
    JDK 1.4 及以下的版本中要想从控制台中输入数据只有一种办法,即使用System.in获得系统的输入流,再桥接至字符流从字符流中读入数据。示例代码如下:
7 J. h$ l) O7 M" O# M! j0 }    import java.io.IOException;
6 O  s4 r& K' m    import java.io.InputStreamReader;
# }2 a) L3 A3 z: N  B    public class Test1 {& a" W( ~$ E+ K# O% i: X
    public static void main(String[] args) {
( t  H  b4 N0 a7 r    String str = readString("请输入字符串:");
" R1 L3 g% z% l0 `8 h  E    System.out.println("readString 方法的输入:" + str);  A; }8 w' ~4 [* f/ k! B
    }
1 V3 T$ B( T' h, `  r    /**) v% ?) @+ p9 M1 Z3 ~- A
    * 使用系统的输入流,从控制台中读取数据4 s. C- f8 ^' L6 v
! ?6 g  U0 t" y; j3 i
    * 用于所用的JDK版本5 k( ], c: d1 k! l  D/ Y( g
    * @param prompt 提示信息& V4 i  x; j0 ?1 Q7 E. e- U
    * @return 输入的字符串
% R5 t- O5 Z2 M: Y% B    */. |8 y" x7 V( A9 w. d9 E
    private static String readString(String prompt) {6 G  M1 j( r- n7 b  {3 h
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));/ D" [* f& k% `4 `3 H! p
    String str = null;
+ ^, b& h. T9 w3 W* {8 @    try {8 n" e/ I: v' L8 }7 u1 `, L% S/ r
    System.out.print(prompt);
. K7 w; d8 x7 G    str = br.readLine();/ ?0 H, \  k: }# g% t
    } catch (IOException e) {
) P. w& c) {, c! [7 ]# s    e.printStackTrace();
$ S$ N2 v$ u+ @# v$ O    }5 p, p4 f7 y% X* O, H
    return str;& ?$ n3 a# c; n, i/ _6 s
    }
2 l6 m" E$ [1 {( {    }
8 G2 p2 s& q" x9 \2 m  g& m    从上面的代码段来看,这种控制台输入的方法非常地麻烦,为了能读取整行的数据,采用了BufferedReader类来进行处理,而且在读取的过程中还需要捕获IOException.不过这是 JDK 1.4 及以下版本中从控制台读取数据唯一的办法。还有一种非控制台读入数据的办法,就是采用 Swing 中的JOptionPane,会弹出一个非常漂亮的输入对话框让使用者输入数据,但这是一种比较另类的做法,不推荐使用。: W. _, E. b1 H
    import javax.swing.JOptionPane;
3 a1 V3 k8 a1 S1 |3 }/ \! Z, W    public class Test2 {* o9 T4 T) M- u+ Z2 w
    public static void main(String[] args) {
! F/ t. N3 I3 T    String str = readStringFromDialog("请输入字符串:");) \0 v$ D7 }9 t) P
    System.out.println("readStringFromDialog 方法的输入:" + str);
' C6 z! j# V6 B" a# D1 J    }
3 J, G: P" J% @/ W    /**# M" i  |2 z% r/ `% }+ }( V4 x; t
    * 使用JOptionPane的输入对话框,输入字符串
0 \3 m% }/ Y8 `, V4 }* J7 Z# u2 h. `. T! S, A+ x
    * 用于所用的JDK版本  ?, n7 m8 L- x& B6 L
    * @param prompt 提示信息
1 K5 F  n8 h# {    * @return 输入的字符串
7 `( ]! D& Y4 ~4 r- @6 q0 \9 c    */2 s. u) q% M% j' L
    private static String readStringFromDialog(String prompt) {
7 A3 e8 `# x1 d9 \# _2 V( s    return JOptionPane.showInputDialog(prompt);
- a3 G  ?) d- s0 ^" N, P* C' I    }
! i+ i9 n; {& [; I    }
, ?6 f# I* U4 y9 Y1 ]    上面的两种方法都有个共同的缺点--只能读取字符串,若需要读取其他类型的数据需要手工进行转换。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-27 21:05 , Processed in 0.894133 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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