我正在尝试从Unity 3.5
检索数据并求和第一个整数值。
我尝试了多种方法来执行此操作,但是无法获得预期的结果。我知道我的逻辑有些错误。但是我无法获得预期的结果。请帮我弄清楚。
ArrayList
预期结果
2汤匙橄榄油加上细毛雨(可选),10汤匙香蒜酱
代码输出
2汤匙橄榄油和细雨可供食用(可选),6汤匙香蒜酱,4汤匙香蒜酱
答案 0 :(得分:0)
我已经理解了您的逻辑,并对代码进行了一些更改。这是您可以替换的代码块,while循环。
for(String ops : list21){
if(sum_list.size()==0){
sum_list.add(ops);
}
else{
String str= ops.trim().replaceAll("[0-9]", "");
String str_from_list=sum_list.get(sum_list.size()-1).replaceAll("[0-9]", "").trim();
if(str_from_list.contains(str.trim())){
System.out.println("found");
int val= Integer.valueOf(sum_list.get(sum_list.size()-1).replaceFirst(".*?(\\d+).*", "$1"));
int to_add = Integer.valueOf(ops.replaceFirst(".*?(\\d+).*", "$1"));
int total = val+to_add;
sum_list.set(sum_list.size()-1,total+" "+str_from_list);
}
else{
sum_list.add(ops);
}
}
System.out.println(sum_list);
}
注意事项
[编辑]
要检查列表中是否存在不带顺序的序列,请使用下面的代码块。
for(String ops : list21){
if(sum_list.size()==0){
sum_list.add(ops);
}
else{
String str= ops.trim().replaceAll("[0-9]", "");
int index=-1;
String str_from_list=null;
for(String str_from_l : sum_list){
str_from_list=str_from_l.replaceAll("[0-9]", "").trim();
if(str_from_list.contains(str.trim())){
index=sum_list.indexOf(str_from_l);
break;
}
}
if(index!=-1){
// System.out.println("found");
int val= Integer.valueOf(sum_list.get(index).replaceFirst(".*?(\\d+).*", "$1"));
int to_add = Integer.valueOf(ops.replaceFirst(".*?(\\d+).*", "$1"));
int total = val+to_add;
sum_list.set(index,total+" "+str_from_list);
}
else{
sum_list.add(ops);
}
}
}
System.out.println(sum_list);