以下に説明する問題で立ち往生しています
のような文字列があり42932-5
、6 つの数字があるとします。
合計を次のように計算したい
4*6+2*5+9*4+3*3+2*2
Java でこれを行うにはどうすればよいでしょうか。
以下に説明する問題で立ち往生しています
のような文字列があり42932-5
、6 つの数字があるとします。
合計を次のように計算したい
4*6+2*5+9*4+3*3+2*2
Java でこれを行うにはどうすればよいでしょうか。
数学や他のほとんどの言語で行うのと同じ方法で計算します
4*10000 + 2*1000 + 9*100 + 3*10 + 2*1 - 5*1
Fortran、C、C++、C#、Scala などで動作します。
まず第一に、合計を探している場合は文字列にする理由はありません... 私はあなたに手がかりを与えることであなたを助けようとします: モジュラス演算子を使用する必要があります (% )、整数の右端の桁に単独でアクセスするため。それを行った後、整数を 10 で割って右端の数値を削除し、% 演算子を再度使用して次の桁にアクセスします。このアイデアをループに入れて小さな変更を加えると、探しているものが正確に実行されるはずです。
基本的に、各桁を別々に合計に追加しようとしています。あなたの場合、合計に追加する前に、各桁に別の数値を掛けたいと考えています。理解するのは難しくありません。お役に立てれば!
これが効率的とは言えませんが、もっと良い方法があると思いますが、楽しかったです :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