मैं ArrayList से डेटा पुनर्प्राप्त करने का प्रयास कर रहा हूं और पहले पूर्णांक मान का योग कर रहा हूं।

मैंने इसे करने के कई तरीकों की कोशिश की है लेकिन अपेक्षित परिणाम प्राप्त करने में असमर्थ हूं। मुझे पता है कि मेरे तर्क में कुछ त्रुटि है। लेकिन मुझे अपेक्षित परिणाम नहीं मिल रहे हैं। कृपया मुझे इसका पता लगाने में मदद करें।

int sum = 0;

List<String> sum_list = new ArrayList<>();
List<String> list21 = new ArrayList<>();
list21.add("1 tbsp olive oil plus a drizzle to serve (optional)");
list21.add("1 tbsp olive oil plus a drizzle to serve (optional)");
list21.add("2 tbsp pesto");
list21.add("2 tbsp pesto");
list21.add("2 tbsp pesto");
list21.add("2 tbsp pesto");
int i = 0;
while (i < list21.size()) {

    String str1 = list21.get(i).trim().replaceAll("[0-9]", "");
    String str2 = list21.get(i + 1).trim().replaceAll("[0-9]", "");

    if (str1.equals(str2)) {

        sum += Integer.valueOf(list21.get(i).replaceFirst(".*?(\\d+).*", "$1"))
                + Integer.valueOf(list21.get(i).replaceFirst(".*?(\\d+).*", "$1"));
        // System.out.println("Sum=" + sum);
        try {
            if (!sum_list.isEmpty() && !sum_list.get(sum_list.size() - 1).trim().replaceAll("[0-9]", "").contains(str2)) {
                sum_list.add(sum + " " + str1);
                sum = 0;
            } else sum_list.add(sum + " " + str1);

        } catch (Exception e) {
        }
    }

    i = i + 2;
}
System.out.println(sum_list.toString());

अपेक्षित परिणाम

२ बड़े चम्मच जैतून का तेल और एक बूंदा बांदी (वैकल्पिक), १० बड़े चम्मच पेस्टो

कोड का आउटपुट

२ टेबल-स्पून जैतून का तेल और एक बूंदा बांदी सर्व करने के लिए (वैकल्पिक), ६ टेबल-स्पून पेस्टो, ४ टेबल-स्पून पेस्टो

1
user11758955 15 जुलाई 2019, 21:06

1 उत्तर

सबसे बढ़िया उत्तर

मैंने आपका तर्क समझ लिया है और कोड में कुछ बदलाव किए हैं। यहां कोड का ब्लॉक है जिसे आप बदल सकते हैं, जबकि लूप।

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);


}

ध्यान देने योग्य बातें

  1. जहां भी आवश्यक हो, प्रिंट स्टेटमेंट को हटा दें।
  2. यह इस धारणा के साथ किया जाता है कि केवल अनुक्रमिक संचालन को एकत्रित किया जाना है।

[संपादित करें]

यह जांचने के लिए कि क्या यह सूची में क्रम के क्रम के बिना मौजूद है, कृपया नीचे दिए गए कोड ब्लॉक का उपयोग करें।

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);
0
venkata krishnan 16 जुलाई 2019, 08:22