String[][] a = {{"a", "1"}, {"a", "2"}, {"a", "3"}, {"b", "11"}, {"b", "12"}, {"b", "13"}};のような多次元配列が与えられているときに
a[i][0]が同じ場合、その区間の合計を求めたいです。
理想とする結果は、sum = {1, 3, 6, 11, 23, 35}のような結果を得たいです。
よろしくお願いします。
java
1public class sample3 { 2 public static void main(String[] args) { 3 4 String[][] a = {{"a", "1"}, {"a", "2"}, {"a", "3"}, {"b", "11"}, {"b", "12"}, {"b", "13"}}; 5 int[] sum = new int[a.length]; 6 int i = 0; 7 sum[0]=Integer.parseInt(a[i][1]); 8 9 for(i=0; i < a.length-1; i++) { 10 if(a[i][0] == a[i+1][0]) { 11 sum[i+1] = sum[i]+Integer.parseInt(a[i][1]) + Integer.parseInt(a[i+1][1]); 12 System.out.println(sum[i]); 13 } 14 } 15 } 16 17}
> a[i][0]が同じ場合、その区間の合計を求めたい
> sum = {1, 3, 6, 11, 23, 35}
"a" の合計, "b" の合計 でしたら
sum = { 6, 36 }
ではないのでしょうか?
キーごとに累積和みたいなことをしたいってこと?
(a 3) (b 1) (a 4) のとき、次のどちらが望ましいのでしょう?
・3 1 4
・3 1 7
わかりづらくてすみません、jimbeさん、swordoneさんの理解が正しいです。
同キーごとの和を求めたいです。
LouiS0616さんの質問にも答えて欲しいですね。つまり、キーが連続でない場合、かまわず和を取るのか、仕切り直すのか?
すみません、質問の意味がわからなかったので、答えられませんでした・・・
キーの並びがa, a, b, aの場合、後のaの値も合計を取るのか、という認識で話を進めますが、キーはソートしているので後で既出のキーは出てきません。
> キーはソートしているので後で既出のキーは出てきません。
物凄く重要な情報です。
そのような暗黙の前提が閲覧者に伝わるよう配慮できるとより良い質問をすることができます。
すみません、具体例を出しているから伝わるだろうと思いました。
以後気を付けます。
加えて、その条件でコードがどうなるか教えてください。
回答1件
あなたの回答
tips
プレビュー