-3

以下に説明する問題で立ち往生しています

のような文字列があり42932-5、6 つの数字があるとします。

合計を次のように計算したい

4*6+2*5+9*4+3*3+2*2

Java でこれを行うにはどうすればよいでしょうか。

4

3 に答える 3

0

数学や他のほとんどの言語で行うのと同じ方法で計算します

4*10000 + 2*1000 + 9*100 + 3*10 + 2*1 - 5*1

Fortran、C、C++、C#、Scala などで動作します。

于 2012-08-11T06:40:22.233 に答える
0

まず第一に、合計を探している場合は文字列にする理由はありません... 私はあなたに手がかりを与えることであなたを助けようとします: モジュラス演算子を使用する必要があります (% )、整数の右端の桁に単独でアクセスするため。それを行った後、整数を 10 で割って右端の数値を削除し、% 演算子を再度使用して次の桁にアクセスします。このアイデアをループに入れて小さな変更を加えると、探しているものが正確に実行されるはずです。

基本的に、各桁を別々に合計に追加しようとしています。あなたの場合、合計に追加する前に、各桁に別の数値を掛けたいと考えています。理解するのは難しくありません。お役に立てれば!

于 2012-08-11T06:41:09.177 に答える
0

これが効率的とは言えませんが、もっと良い方法があると思いますが、楽しかったです :P

String最初に行う必要があるのは、必要のない部分を破棄することです

int sum = 0;
String test = "42932-5";
List<Integer> listValues = new ArrayList<Integer>(test.length());
for (int index = 0; index < test.length(); index++) {

    char value = test.charAt(index);
    if (Character.isDigit(value)) {

        listValues.add(Integer.parseInt(Character.toString(value)));

    }


}

StringBuilderさて、 a の代わりに a を使用できますがList、これが私の頭から離れたものでした。

次に、それらを合計する必要があります

for (int index = 0; index < listValues.size(); index++) {

    sum += (listValues.get(index) * (test.length() - index - 1));

}

そして、私は次のようなものになりました

(4 * 6) + (2 * 5) + (9 * 4) + (3 * 3) + (2 * 2) + (5 * 1)
= 88
于 2012-08-11T06:54:27.297 に答える