Java 在处理器中使用另一个类

Java 在处理器中使用另一个类,java,xml,Java,Xml,我有一个csv文件,我把它改成了一个xml文件,效果很好。但是现在我需要从这个文件中提取两个xml值,并将其写入第三个节点。 我用下面的代码进行了尝试 @DataField(pos = 10) //which is 3 @XmlElement(required = true) private int Number1; @DataField(pos = 11) //which is 0.75 @XmlElement(required = true) private double Number2;

我有一个csv文件,我把它改成了一个xml文件,效果很好。但是现在我需要从这个文件中提取两个xml值,并将其写入第三个节点。 我用下面的代码进行了尝试

@DataField(pos = 10) //which is 3
@XmlElement(required = true)
private int Number1;
@DataField(pos = 11) //which is 0.75
@XmlElement(required = true)
private double Number2;
@XmlElement(required = true)
protected double Overall=Number1*Number2;
因此,xml_的结果应该如下所示:

<Number1>3</Number1>
<Number2>0.75</Number2>
<Overall>2.25</Overall>
3
0.75
2.25
但结果是这样的:

<Number1>3</Number1>
<Number2>0.75</Number2>
<Overall>0.0</Overall>
3
0.75
0

当我写入受保护的双总=Number1*0.75+2;它返回2表示总体,因此它似乎将Number1设置为0,而不是3。。如何解决此问题?

您正在声明级别执行计算,即当您声明字段
总体
时,您正在从一些尚未初始化的其他变量中导出其值。
为了避免这种情况,您可以使用某种方法进行计算。

您正在计算声明部分的“总体”变量。当JAXB使用setter设置元素中的值时,其他变量可能尚未初始化

每当数字1和数字2发生变化时,计算“总体”

private void calculateOverall(){//new method to write
   this.overall = this.number1*this.number2+2;
}

public void setNumber1(int number){//modified setter method
   this.number1 = number;
   calculateOverall();//calculate the variable afresh when setting values
}

public void setNumber2(double number){//modified setter method
   this.number2 = number;
   calculateOverall();//calculate the variable afresh when setting values
}

在Artikel类之上的类中添加以下内容:

void calc() {

    Artikel.calculateOverall();
}

修正:3

感谢您的快速帮助,但它仍然只是列出了+2(因此它是2。0@KleineKiwi我认为更新后的答案应该有效。我当时正在匆忙给出答案。现在检查。@KleineKiwi这对你有帮助吗?有点,我只是不知道如何将计算整体重新整合到整体中,尝试了GetTotall和return,但不起作用:/(对不起,我还是有点noobish@KleineKiwi:D我已经把代码给你了。你只要把那些方法放进去就行了。没有别的了。你到底想干什么?