试图根据字符串arraylist的索引加起双数组列表的总成本

时间:2018-05-18 05:51:18

标签: java arraylist

所以我有一个循环字符串deploy的数组列表,以及那些没有重复singDeploy的字符串的数组列表。我还有一个与rate具有相同索引的双精度deploy的数组列表。我正在尝试为每个部署字符串添加所有费率,并将它们存储在totCost匹配singDeploy索引中但是我的for循环给了我java.lang.IndexOutOfBoundsException。不太清楚为什么,仍然不完全知道我的循环是否完成了这项工作。

 List<String> deploy = new ArrayList<>();
 List<String> singDeploy = new ArrayList<>();
 List<Double> totCost = new ArrayList<>();
 List<Double> rate = new ArrayList<>();
  singDeploy.addAll(Arrays.asList("Green Cow", "Green Elephant", "Green Rhinocerous", "Purple Cow", "Yellow Cat", "Red Sloth"));

  deploy.addAll(Arrays.asList("Green Cow", "Green Cow", "Green Elephant", "Green Cow", "Green Cow", "Green Rhinocerous", "Purple Cow", "Yellow Cat", "Red Sloth", "Green Cow", "Purple Cow", "Green Cow", "Red Sloth", "Yellow Cat", "Green Rhinocerous", "Purple Cow"));

  rate.addAll(Arrays.asList(0.553683754016, 1.02150872447, 0.134625067987, 1.98664453833, 0.861269450714, 0.36946659851, 0.909230205525, 0.00248039618935, 0.160619970732, 0.545320579333, 0.0709241158945, 3.96782782573E-6, 0.849530002338, 1.29965105158, 6.72974424027E-6, 4.51463564725E-6));


 for(int i=0;i<singDeploy.size();i++) {
    for(int j=0;i<deploy.size();j++) {
    if(singDeploy.get(i)==deploy.get(j)) {
        double temp=totCost.get(i);
        System.out.println(temp);
        totCost.add(temp+=rate.get(j));
    }
     else {
        j++;
        }
   }

3 个答案:

答案 0 :(得分:1)

多件事,

for(int j=0;j <deploy.size();j++) { // Use j

totCost.get(j); // Use j again,

singDeploy.get(i).equals(deploy.get(j)) // Use equals

或试试这个,

for(int i=0;i < singDeploy.size() ;i++) {
             Double curCost = 0.0;
             String currDeploy = singDeploy.get(i);
             for(int j=0;j<deploy.size();j++) {
                 if(deploy.get(j).equals(currDeploy))
                     curCost += rate.get(j);
             }
             totCost.add(curCost);
          }

答案 1 :(得分:0)

在这一行: double temp=totCost.get(i); 您正在尝试访问totCost中没有元素的元素。 这可能是IndexOutOfBound的原因。

答案 2 :(得分:0)

在第for(int j=0;i<deploy.size();j++) {行,你应该把j代替我

for(int j=0;j<deploy.size();j++) {

在当前代码中进行无限循环。另外,正如Bhargav所说,你正试图访问该元素,即

double temp=totCost.get(i);

里面没有任何元素。