2012-08-11 67 views
-3

我被困在下面描述的問題Java的計算問題

假設我們有一個像42932-5一個字符串,其中有6個號碼

我要計算的總和作爲

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

我們如何在Java中做到這一點?

+2

你是如何獲得你的「總和」的公式...? – Derek 2012-08-11 06:34:24

+0

這是功課嗎? – 2012-08-11 06:46:04

+0

@Derek似乎是賬單支付賬號(看起來像瑞典人)的簡單校驗碼,右邊的乘數減少了。 num(charAt(i))*(n-i) – 2012-08-11 06:48:26

回答

0

我不能說這efficent,我敢肯定有一個更好的方式去了解它,但乾草,很好玩: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,而不是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 
+0

恩,這不應該是88嗎? :) – 2012-08-11 07:14:13

+0

@JoachimIsaksson乾草,沒有說這是偉大的;) - 測試字符串是使用正確的公式,實際計算不是,謝謝注意,你已經過去的回答者是一個虛擬測試;) – MadProgrammer 2012-08-11 07:19:44

+0

@MadProgrammer對不起,延遲迴復,我不舒服。 (4 * 6)+(2 * 5)+(9 * 4)+(3 * 3)+(2 * 2)% 11 = 6和11-6 = 5應該與「 - 」之後的數字匹配,即5。再次感謝您的幫助。 – 2012-08-14 05:09:30

0

的計算同樣的方式,你在數學和幾乎任何其他語言

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

工程用Fortran,C,C++,C#,斯卡拉做,....

0

好,首先,如果你正在尋找總和,那麼沒有理由將它變成一個字符串......我會試着通過給你一個指導來幫助你:你需要使用模數運算符(%),以便自己訪問整數的最右側數字。完成之後,將整數除以10以刪除最右邊的數字,然後再次使用%運算符以訪問下一個數字。如果你把這個想法變成一個循環並做一些小的修改,它應該做你正在尋找的東西。

基本上,您試圖將每個數字分別添加到總數中。在你的情況下,你希望每個數字乘以另一個數字,然後將其添加到總數中。不應該很難弄清楚。希望這可以幫助!