a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 103|回复: 0

[JAVA] 2011年计算机等级考试二级JAVA学习精华整理(6)

[复制链接]
发表于 2012-7-31 22:04:26 | 显示全部楼层 |阅读模式
  1.1.2.2 Vector类与Enumeration接口6 t$ |* R$ ~/ w
  Vector类用于保存一组对象,由于java不支持动态数组,Vector可以用于实现跟动态数组差不多的功能。如果要将一组对象存放在某种数据结构中,但是不能确定对象的个数时,Vector是一个不错的选择。+ }9 ^5 G. N' r
  例:将键盘上输入的一个数字序列的每位数字存储在vector对象中,然后在屏幕上打印出各位数字相加的结果。8 K4 z% n. o3 d$ O2 k0 X
  import java.util.*; //Vector类和Enumeration接口都在这个包中
0 L4 T5 N% {: j. I( R) {8 A  public class TestVector
# U% S, a* z& H2 |  {" L: p3 E4 a: s8 c/ d
  public static void main(String[] args)
, @8 a* t/ N1 u* E5 E) M0 P  {
3 @' Z; C7 M; K2 F7 Q& s" q  Vector v=new Vector();
1 z0 r9 |+ X1 ?  int b=0;
2 _/ ^$ [. h* x' |; f, z! L/ Z  int num=0;
: T" P; l; O% }  H2 v  System.out.println("Please enter number:");
3 x$ S( d; C) S3 R  while(true)6 A& ?4 n% S! e7 [7 s3 k1 B
  {
% F* t( ]* n: x! z' i. C# l6 N  try; ~# Q+ \: j/ W" M" g- x  m
  {
; g% A4 y* O  d  A9 _, Q0 m8 w8 I  b=System.in.read(); //从键盘读入一个字节内容- n  D/ v  Q3 [( b9 v3 r
  }! z6 u& O8 x( N0 @  N0 b
  catch(Exception e)8 a$ n2 V6 l) q% \4 R
  {
( {9 ~- H9 D: f' b: G, m  e.printStackTrace();
/ x$ P+ B4 A/ r' F  }
+ f" o# \  O5 d( |% i  if(b=='\r'||b=='\n') //如果是回车或换行的话,则退出while循环,即一串数据输入完成2 `2 j" G9 _0 r  S, v
  {
2 K( M1 n; J- e# U- r& N( R3 J  break;
' ?/ C; O4 R! B; P9 q$ T  }& k% Z/ O7 H, Q# W
  else
: d. z& o8 n' N$ k7 S  {
6 D# {+ I# k: U0 l, R# o$ c: S: n! v  num=b-'0';  O5 z# z* f% I5 M& N: e% A' ]
  /*由于输入的是字符数字,它的数值是它的ascii码,例如‘0’=32;‘1’=33,
; M) ^* F. s3 k  所以要想让输入的‘1’在计算机里为1,必须减去32,即‘0’*/
% }, q! D, }5 u; g( \  q' D: V! c  v.addElement(new Integer(num)); //将数字存入vector
, R% F* ^! q" L  }
+ H; u" b, r% X/ N  }# W; y/ b8 p: I6 \/ g2 f- q) _4 f. X" I
  int sum=0;
2 Z6 S' ?' w8 F9 w. X  Enumeration e=v.elements();
2 x1 J$ m7 }; }1 K( E- F  //取出Vector中的所有元素,必须使用elements()方法,它返回一个Enumeration接口。& M% u; [  ~1 }* b0 r2 p6 D
  while(e.hasMoreElements())//如果当前指示器还指向一个对象,即还有数据: n7 \5 k7 e$ l" C& Y$ D% ?
  {0 G% j) h+ g) H0 v3 P# V* ]; n
  Integer intobj=(Integer)e.nextElement();
4 M; E# H% a4 V& J* t7 a  //取出当前指示器所指的对象,并将指示器指向下一个对象。
4 F3 E9 H3 R  G  [9 @  sum+=intobj.intValue(); //将Integer对象中所包装的整数取出来,并且加到sum中。
. Z" O0 u3 N; X) z, d( p  }
% w; i1 ]) |+ p% L% p$ M  System.out.println(sum);//打印出这个和/ f3 @: U0 D7 s) A1 I2 b9 J4 _
  }
  h" j% w0 g) `  }, `, j* `4 L, n* t; B( w1 W, G$ E
  Enumeration的nextelement()方法返回的是指示器指示的对象,然后将指示器指向下一个对象。
( c  b' ]. Q* z: J: g- o# F0 O) i  由于vector可以存储各种类型的对象,所以编译器无法知道存储的是什么类型的对象,所以即使我们知道里面存储的是什么类型的,也要显示的说明它是什么类型的,如本例中的(Integer)e.nextElement();
! W" F  c4 R, Y, C& M" P, q  Enumeration接口实现了一种机制,通过这种机制,我们就可以只用hasMoreElements()方法以及nextElement()方法就可以实现所有对象的访问。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-17 16:36 , Processed in 0.178977 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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