[英]How to cast from class type object to double type in java
我有一种方法可以从两个不同的类类型列表中减去两个值。
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是我的班级名称。 这两个清单以下列方式持有价值-
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行Double x= ref_jsp.get(i);Double y=st_jsp.get(i);
上从Ref_user_interface转换为Double ** Double x= ref_jsp.get(i);Double y=st_jsp.get(i);
。 有什么方法可以从包含对象类型数据的两个列表中减去我的值?
EDIT-1我有getter和setter方法。但是对于列表的每个值,我是否必须包含getter方法?对于我的getter和setter方法,请访问我的链接setter方法
编辑-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与y 映射 ,依此类推。此外,此循环为我提供了42个值。我的ref_jsp有21行, st_jsp有78行,但是这些行重复了两次。我无法理解for循环 。请帮助我解释一下。我不想将我的值累加到索引处,
我的实际问题是-> 我只想将x的每个索引的getter的值与y的每个索引的getter的值进行比较,并找出差值。
事情是您的列表返回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);
}
}
依此类推,您将获得所需的所有值,然后根据逻辑使用它。
您需要像这样的setter的getter ref.setSt1_vs1_bag6_rb(rs.getDouble(8));
。 当您调用ref_jsp.get(i)
它返回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.
}
}
上面的代码片段将为您提供一个具有所需值的双精度数组。 对其他一组值执行此操作,然后比较两个数组。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.