日期:2014-05-20  浏览次数:21008 次

jdk1.6和jdk1.3的矛盾问题,纠结中
程序是在jdk1.6环境中编写的,因为jdk1.3中没有split()方法,没有Vector<Double>这种泛型的定义,而EAI方法使用的JDK限制在1.4版本以下,所以想要把jdk换成1.3的,但是对于1.3中相当于split()方法的函数以及泛型的一些东西不是很了解,现把一部分程序贴至如下:

  Vector<Double> XAxis1=new Vector<Double>();
Vector<Double> YAxis1=new Vector<Double>();
Vector<Double> ZAxis1=new Vector<Double>();
Vector<Double> XAxis=new Vector<Double>();
Vector<Double> YAxis=new Vector<Double>();
Vector<Double> ZAxis=new Vector<Double>();
//变量定义

try{
BufferedReader reader=new BufferedReader(new FileReader(path));
String content=null;
while((content=reader.readLine())!=null){
textarea1.append(content+"\n");
String[] st =content.split(",");
  XAxis1.addElement(Double.valueOf(st[0]).doubleValue());
  YAxis1.addElement(Double.valueOf(st[1]).doubleValue());
  ZAxis1.addElement(Double.valueOf(st[2]).doubleValue());
}
reader.close();
}catch(IOException ie){
textarea1.append("read from file:"+ie.getMessage());
}
catch(SecurityException se){
textarea1.append("Security constraint,Can't read from the file!\n");
}
}
。。。。。。。。。
for(int i=0;i<=w-1;i++){
XAxis.addElement((XAxis1.elementAt(i)+XAxis1.elementAt(i+w))/2);
YAxis.addElement((YAxis1.elementAt(i)+YAxis1.elementAt(i+w))/2);
ZAxis.addElement(((ZAxis1.elementAt(i)+ZAxis1.elementAt(i+w))/2-(ZAxis1.elementAt(0)+ZAxis1.elementAt(0+w))/2)*1000);
}

JDK1.3中Vector变量不能向上面一样定义,而且(XAxis1.elementAt(i)+XAxis1.elementAt(i+w))/2不能这样写,说是object对象类型不能直接关系运算,要转类型,这个不会,麻烦哪位高人帮忙把上面程序用在1.3环境下改下!

------解决方案--------------------
JDK 1.3 中除了没有泛型、正则表达式之外,还没有 JDK 5 中的自动装箱和拆箱功能

XAxis1.addElement(Double.valueOf(st[0]).doubleValue());
Java code
XAxis1.addElement(Double.valueOf(st[0]));


XAxis.addElement((XAxis1.elementAt(i)+XAxis1.elementAt(i+w))/2);
Java code
XAxis.addElement(toWrapDouble(getDouble(XAxis1, 1) + getDouble(XAxis1, i+w) / 2));

private static double getDouble(Vector vector, int index) {
    return toDouble(vector.elementAt(index));
}

private static Double toWrapDouble(double num) {
    return Double.valueOf(num);
}

private static double toDouble(Object obj) {
    if(obj == null) {
        throw new NullPointerException("obj is null!");
    }
    if(!(obj instanceof Double)) {
        throws new ClassCastException("obj must be Double!");
    }
    return ((Double)obj).doubleValue();
}