如何从 class 类型的对象转换为 java 中的双精度类型
How to cast from class type object to double type in java
我有一种方法可以从 class type.The 的两个不同列表中减去两个值,减法代码是
public LinkedHashMap<String, List<Double>> diff()
{
List<Double> z=new ArrayList<Double>();
for(int i=0;i<st_jsp.size()&&i<ref_jsp.size();i++){
Double x=(double) ref_jsp.get(i);
Double y=st_jsp.get(i);
if(x>y){
z.add(x-y);
}
else{
z.add(y-x);
}
dif.put("", z);
}
return dif;
}
这里st_jsp和ref_jsp是两个列表,比如List<Ref_user_interface> st_jsp=new ArrayList<Ref_user_interface>();
和List<Ref_user_interface> st_jsp=new ArrayList<Ref_user_interface>();
Ref_user_interface是我的class名字。
这两个列表以下列方式保存值-
ref.setSt1_vs1_bag6_rb(rs.getDouble(8));
ref.setSt1_vs1_bag7_rb(rs.getDouble(9));
ref.setSt1_vs1_bag8_rb(rs.getDouble(10));
st_jsp.add(ref);
其中 ref 是 Ref_user_interface ref=new Ref_user_interface();
在我的减法方法中,我在行 Double x= ref_jsp.get(i);Double y=st_jsp.get(i);
上收到 ** 无法从 Ref_user_interface 转换为 Double**。
有什么方法可以从两个包含对象类型数据的列表中减去我的值。?
EDIT-1
对于列表的每个值,我都有 getter 和 setter methods.But,我必须包括 getter 方法吗?对于我的 getter 和 setter方法请访问linksetter method of mine
EDIT-2
我已经根据你所有的答案改变了我的减法方法-
public LinkedHashMap<String, List<Double>> diff()
{
List<Double> z=new ArrayList<Double>();
for(int i=0;i<st_jsp.size()&&i<ref_jsp.size();i++)
{
Comaprision refObj = ref_jsp.get(i);
Comaprision stObj = st_jsp.get(i);
Double x =refObj.getBeam_current();
x+=refObj.getBeam_energy();
x+=refObj.getSt2_vs2_bag1_rb();
x+=refObj.getSt2_vs2_bag2_rb();
x+=refObj.getSt2_vs2_bag3_rb();
x+=refObj.getSt2_vs2_bag4_rb();
x+=refObj.getSt2_vs2_bag5_rb();
x+=refObj.getSt2_vs2_bag6_rb();
x+=refObj.getSt2_vs2_bag7_rb();
x+=refObj.getSt2_vs2_bag8_rb();
x+=refObj.getSt2_vs2_bag9_rb();
Double y = stObj.getBeam_current();
y+=stObj.getBeam_energy();
y+=stObj.getSt2_vs2_bag1_rb();
y+=stObj.getSt2_vs2_bag2_rb();
y+=stObj.getSt2_vs2_bag3_rb();
y+=stObj.getSt2_vs2_bag4_rb();
y+=stObj.getSt2_vs2_bag5_rb();
y+=stObj.getSt2_vs2_bag6_rb();
y+=stObj.getSt2_vs2_bag7_rb();
y+=stObj.getSt2_vs2_bag8_rb();
if((x>y)){
z.add(x-y);
}
else{
z.add(y-x);
dif.put("", z);
}
return dif;
}
但我不明白是否正在添加 1 索引处的所有值,然后与索引 1 处的 y 进行比较,依此类推。而且这个循环给了我 42 values.My ref_jsp 有 21 行,st_jsp 有 78 行,但这些行的值正在重复 twice.I 无法理解这个 for 循环 。请帮助我 explain.I 不想在索引处添加我的值,
我的实际问题是 -->我只想比较 x 的每个索引的 getter 处的值与 y 的每个索引的 getter 处的值并找到差异。
这个东西是你的列表 returns Ref_user_interface
的对象,所以你可以通过调用 getter 方法来获得价值
ref_jsp.get(i).getSt1_vs1_bag6_rb()
如果您想要所有 getter 方法,请在您的 for 循环中尝试此方法
for(int i=0;i<st_jsp.size()&&i<ref_jsp.size();i++){
Ref_user_interface refObj = ref_jsp.get(i);
Ref_user_interface stObj = st_jsp.get(i);
Double x = refObj.getSt1_vs1_bag6_rb();
Double y = stObj.getSt1_vs1_bag6_rb();
comparing(x,y);
x =refObj.getSt1_vs1_bag7_rb();
y = stObj.getSt1_vs1_bag7_rb();
comparing(x,y)
// and so on for all the getters method you have for this obj
public void comparing(Double x,Double y){
// write your comparing logic here and add value in map
if(x > 0 && y > 0){
if(x>y){
z.add(x-y);
}else{
z.add(y-x);
}
}else if(x>0){
z.add(x);
}else{
z.add(y);
}
}
依此类推你得到所有你想要的值然后按照你的逻辑使用它。
你需要一个这样的gettersetterref.setSt1_vs1_bag6_rb(rs.getDouble(8));
.当你调用 ref_jsp.get(i)
它 returns Ref_user_interface
然后你需要调用新的 getter 方法来得到你想要的。
更新:
Double[] dbl_x = new Double[ref_jsp.size()];
Double[] dbl_y = new Double[ref_jsp.size()];
for(int i=0; i<ref_jsp.size(); i++){
dbl_x[i] = ref_jsp.get(i).getSt1_vs1_bag6_rb();
}
for(int i=0; i<ref_jsp.size(); i++){
dbl_y[i] = st_jsp.get(i).getSt1_vs1_bag6_rb();
}
最后你有两个数组 dbl_x 和 dbl_y 这些数组包含 x 和 y 值(你之前提到过)
然后你所要做的就是比较这两个数组并做出决定。
for(){
if(dbl_x[i] > dbl_y[i]){
// do this.
}else{
// do that.
}
}
以上代码片段将为您提供一个包含所需值的双精度数组。对其他值集执行此操作并比较两个数组。
注意:getSt1_vs1_bag6_rb()
是getter方法,其中returns需要的值。阅读 about getters here
我有一种方法可以从 class type.The 的两个不同列表中减去两个值,减法代码是
public LinkedHashMap<String, List<Double>> diff()
{
List<Double> z=new ArrayList<Double>();
for(int i=0;i<st_jsp.size()&&i<ref_jsp.size();i++){
Double x=(double) ref_jsp.get(i);
Double y=st_jsp.get(i);
if(x>y){
z.add(x-y);
}
else{
z.add(y-x);
}
dif.put("", z);
}
return dif;
}
这里st_jsp和ref_jsp是两个列表,比如List<Ref_user_interface> st_jsp=new ArrayList<Ref_user_interface>();
和List<Ref_user_interface> st_jsp=new ArrayList<Ref_user_interface>();
Ref_user_interface是我的class名字。
这两个列表以下列方式保存值-
ref.setSt1_vs1_bag6_rb(rs.getDouble(8));
ref.setSt1_vs1_bag7_rb(rs.getDouble(9));
ref.setSt1_vs1_bag8_rb(rs.getDouble(10));
st_jsp.add(ref);
其中 ref 是 Ref_user_interface ref=new Ref_user_interface();
在我的减法方法中,我在行 Double x= ref_jsp.get(i);Double y=st_jsp.get(i);
上收到 ** 无法从 Ref_user_interface 转换为 Double**。
有什么方法可以从两个包含对象类型数据的列表中减去我的值。?
EDIT-1 对于列表的每个值,我都有 getter 和 setter methods.But,我必须包括 getter 方法吗?对于我的 getter 和 setter方法请访问linksetter method of mine
EDIT-2
我已经根据你所有的答案改变了我的减法方法-
public LinkedHashMap<String, List<Double>> diff()
{
List<Double> z=new ArrayList<Double>();
for(int i=0;i<st_jsp.size()&&i<ref_jsp.size();i++)
{
Comaprision refObj = ref_jsp.get(i);
Comaprision stObj = st_jsp.get(i);
Double x =refObj.getBeam_current();
x+=refObj.getBeam_energy();
x+=refObj.getSt2_vs2_bag1_rb();
x+=refObj.getSt2_vs2_bag2_rb();
x+=refObj.getSt2_vs2_bag3_rb();
x+=refObj.getSt2_vs2_bag4_rb();
x+=refObj.getSt2_vs2_bag5_rb();
x+=refObj.getSt2_vs2_bag6_rb();
x+=refObj.getSt2_vs2_bag7_rb();
x+=refObj.getSt2_vs2_bag8_rb();
x+=refObj.getSt2_vs2_bag9_rb();
Double y = stObj.getBeam_current();
y+=stObj.getBeam_energy();
y+=stObj.getSt2_vs2_bag1_rb();
y+=stObj.getSt2_vs2_bag2_rb();
y+=stObj.getSt2_vs2_bag3_rb();
y+=stObj.getSt2_vs2_bag4_rb();
y+=stObj.getSt2_vs2_bag5_rb();
y+=stObj.getSt2_vs2_bag6_rb();
y+=stObj.getSt2_vs2_bag7_rb();
y+=stObj.getSt2_vs2_bag8_rb();
if((x>y)){
z.add(x-y);
}
else{
z.add(y-x);
dif.put("", z);
}
return dif;
}
但我不明白是否正在添加 1 索引处的所有值,然后与索引 1 处的 y 进行比较,依此类推。而且这个循环给了我 42 values.My ref_jsp 有 21 行,st_jsp 有 78 行,但这些行的值正在重复 twice.I 无法理解这个 for 循环 。请帮助我 explain.I 不想在索引处添加我的值,
我的实际问题是 -->我只想比较 x 的每个索引的 getter 处的值与 y 的每个索引的 getter 处的值并找到差异。
这个东西是你的列表 returns Ref_user_interface
的对象,所以你可以通过调用 getter 方法来获得价值
ref_jsp.get(i).getSt1_vs1_bag6_rb()
如果您想要所有 getter 方法,请在您的 for 循环中尝试此方法
for(int i=0;i<st_jsp.size()&&i<ref_jsp.size();i++){
Ref_user_interface refObj = ref_jsp.get(i);
Ref_user_interface stObj = st_jsp.get(i);
Double x = refObj.getSt1_vs1_bag6_rb();
Double y = stObj.getSt1_vs1_bag6_rb();
comparing(x,y);
x =refObj.getSt1_vs1_bag7_rb();
y = stObj.getSt1_vs1_bag7_rb();
comparing(x,y)
// and so on for all the getters method you have for this obj
public void comparing(Double x,Double y){
// write your comparing logic here and add value in map
if(x > 0 && y > 0){
if(x>y){
z.add(x-y);
}else{
z.add(y-x);
}
}else if(x>0){
z.add(x);
}else{
z.add(y);
}
}
依此类推你得到所有你想要的值然后按照你的逻辑使用它。
你需要一个这样的gettersetterref.setSt1_vs1_bag6_rb(rs.getDouble(8));
.当你调用 ref_jsp.get(i)
它 returns Ref_user_interface
然后你需要调用新的 getter 方法来得到你想要的。
更新:
Double[] dbl_x = new Double[ref_jsp.size()];
Double[] dbl_y = new Double[ref_jsp.size()];
for(int i=0; i<ref_jsp.size(); i++){
dbl_x[i] = ref_jsp.get(i).getSt1_vs1_bag6_rb();
}
for(int i=0; i<ref_jsp.size(); i++){
dbl_y[i] = st_jsp.get(i).getSt1_vs1_bag6_rb();
}
最后你有两个数组 dbl_x 和 dbl_y 这些数组包含 x 和 y 值(你之前提到过)
然后你所要做的就是比较这两个数组并做出决定。
for(){
if(dbl_x[i] > dbl_y[i]){
// do this.
}else{
// do that.
}
}
以上代码片段将为您提供一个包含所需值的双精度数组。对其他值集执行此操作并比较两个数组。
注意:getSt1_vs1_bag6_rb()
是getter方法,其中returns需要的值。阅读 about getters here