Topic: 求助一个java小程序

  Print this page

1.求助一个java小程序 Copy to clipboard
Posted by: gumuyang
Posted on: 2007-01-26 12:29

调试一道书上的题目(电子工业出版社的<<Java2实用教程>> ),发现书上的程序例子操作起来有问题。
废不多说,直接入正题:
class Example4_7{
public String name=" ";
public void base_int(int p_One){
p_One = 100;
}
public void addElement(java.util.Vector p_Vt){
p_Vt.addElement("Hello Java World!");
}
public static void main(String[] args){
Example4_7 e = new Example4_7();
int x = 12;
e.base_int ( x );
System.out.println("形参: "+x);
java.util.Vector ta = new java.util.Vector();
ta.addElement("Java 2");
e.addElement(ta);
System.out.println("引用: "+ta);
}
}

书上说运行结果是:
形参:12
引用:[Java 2, Hello Java World!]

我就按照程序打了一遍,文件名为Example4_7.java

按javac Example4_7.java调试(为了方便我专门在d盘设了个java目录调试程序,调调试路径不会错),显示结果如下:
注意:Exaple4_7.java使用了未经检查或不安全的操作。
注意:要了解详细信息,请使用 -Xlint:unchecked重新编译。

于是我输入javac Example4_7.java -Xlint:unchecked
显示结果如下:
Example4_7.java:7: 警告:[unchecked] 对作为普通类型 java.util.Vector 的成员的 addElement(E) 的调用未经检查
p_Vt.addElement("Hello Java World!");
^
Example4_7.java:15: 警告:[unchecked] 对作为普通类型 java.util.Vector 的成员的 addElement(E) 的调用未经检查
ta.addElement("Java 2");
^
2 警告

如何解决?高人我谢谢您了!

2.Re:求助一个java小程序 [Re: gumuyang] Copy to clipboard
Posted by: wmkm0113
Posted on: 2007-01-26 13:49

应该是你代码里的小问题,发生这种情况的原因如下:

java.util 中的类 Vector<E>
其构造方法Vector() 是构造一个空向量,使其内部数据数组的大小为 10,其标准容量增量为零。
而当你调用addElement(E obj) 方法时,执行的操作是将指定的组件(obj)添加到此向量的末尾,并将其大小增加 1。这时如果内部数据数组内容已经达到最大值,此时再执行这种操作就会报错。

解决方法:
根据你的需求,只需要将
java.util.Vector ta = new java.util.Vector();
这行代码修改为:
java.util.Vector<String> ta = new java.util.Vector<String>();就可以了。
上面的定义同样修改。

3.Re:求助一个java小程序 [Re: gumuyang] Copy to clipboard
Posted by: wmkm0113
Posted on: 2007-01-26 13:53

因为你是要向数据数组中添加字符串,所以使用<String>。别的参数还是自己去看Java的API文档吧。那里面比较详细

4.Re:求助一个java小程序 [Re: gumuyang] Copy to clipboard
Posted by: gumuyang
Posted on: 2007-01-26 17:19

首先谢谢楼上的帮助!弱弱地说一句:你说的具体做法我还是没看懂。

另外,我运行了一下java Example4_7,结果显示如下:
形参:12
引用:[Java 2,Hello Java World!]

为什么javac的时候有问题,java运行的时候还是能显示正确答案呢?

5.Re:求助一个java小程序 [Re: gumuyang] Copy to clipboard
Posted by: 九佰
Posted on: 2007-01-26 20:31

你用的是java se 5.0(jdk 1.5)编译会出现这种情况.
这是因为java se 5.0新增加了对泛型的支持,在使用vector的时候要求你指明存储内容的类型.

如果使用j2se 1.4.x 编译书上的例子就没有问题了.

6.Re:求助一个java小程序 [Re: gumuyang] Copy to clipboard
Posted by: 嚼花仔
Posted on: 2007-01-26 21:23

为什么javac的时候有问题,java运行的时候还是能显示正确答案呢?
因为你的javac出现的都是warning而不是error,所以java可以运行通过

7.Re:求助一个java小程序 [Re: gumuyang] Copy to clipboard
Posted by: 嚼花仔
Posted on: 2007-01-26 21:24

弱弱的问一句,"java se 5.0新增加了对泛型的支持"什么是泛型啊

8.Re:求助一个java小程序 [Re: gumuyang] Copy to clipboard
Posted by: gumuyang
Posted on: 2007-01-29 08:39

谢谢各位的热情解答,虽然我现在还没有全懂,但起码明白了:warning不是error,警告未必不能运行。


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923