2013-11-25 79 views
0

我正在開發一款Android應用程序,它是一款數字學應用程序。在其中計算該名稱的值是做:計算缺失數字的數量

甲,J,S - 1
B,K,T - 2
C,L,U - 3
d,M,V - 4
E,N,W - 5
F,O,X - 6
G,P,Y - 7
H,Q,Z - 8
I,R - 9

這是每封信的價值。當用戶輸入名稱時,他的值將被計算並顯​​示結果。我開發了計算價值的代碼。但現在我需要計算缺失的數字。例如我的名字是ROSHAN,我的值是R - 9, O - 6, S - 1, H - 8, A - 1, N - 5。所以當我計算所有這些值9+6+1+8+1+5 = 30 = 3+ 0 = 3。所以我的價值是三。我爲此做了代碼。

我正在開發代碼,以找到缺失的數字,如我的名字中缺少的數字是2,3,4,7,所以4中缺失的數字的數量。誰能幫助我?我已經提供了迄今爲止我開發的代碼。

Mainactivity.java

long sum70 = 0; 
long sum80 = 0; 
long sum90 = 0 
sum70 = getsum70(et7.getText().toString()); 
sum80 = getSum80(et8.getText().toString()); 
sum90 = getSum90(et9.getText().toString()); 
private long getsum70(String text) { 
    // TODO Auto-generated method stub 
    long sum70 = 0; 
    char[] name70 = new char[text.length()]; 

    name70 = text.toCharArray(); 

    for(int i=0; i<text.length(); i++) 
    { 
    sum70 += value70(name70[i]); 
    } 

    while (sum70>9) 
    {     
    sum70 = findDigitSum70(sum70);   
    } 
    return sum70; 
} 


private long value70(char a) { 
    // TODO Auto-generated method stub 
    switch(a) 
    { 
    case 'A': 
    return 1;  
    case 'B': 
    return 2; 
    case 'C': 
    return 3; 
    case 'D': 
    return 4; 
    case 'E': 
    return 5; 
    case 'F': 
    return 6; 
    case 'G': 
    return 7; 
    case 'H': 
    return 8; 
    case 'I': 
    return 9; 
    case 'J': 
    return 1; 
    case 'K': 
    return 2; 
    case 'L': 
    return 3; 
    case 'M': 
    return 4; 
    case 'N': 
    return 5; 
    case 'O': 
    return 6; 
    case 'P': 
    return 7; 
    case 'Q': 
    return 8; 
    case 'R': 
    return 9; 
    case 'S': 
    return 1;   
    case 'T': 
    return 2; 
    case 'U': 
    return 3; 
    case 'V': 
    return 4; 
    case 'W': 
    return 5; 
    case 'X': 
    return 6; 
    case 'Y': 
    return 7; 
    case 'Z': 
    return 8; 
    default:   
    return 0; 

    } 
} 

private long findDigitSum70(long n) { 
    // TODO Auto-generated method stub 
    int sum70=0; 
    while (n != 0) 
    { 
    sum70 += n % 10; 
    n = n/10; 
    } 
    return sum70; 
} 
+0

變量名稱不好,您的代碼很難理解。 – Maroun

+1

我已投票結束。在我看來,你已經編碼了一點點,但甚至沒有嘗試解決問題中較難的部分。請自己嘗試一下,然後向我們提供關於您的*嘗試解決方案*的*特定*問題。如果您編輯您的問題以包含您的解決方案,請使用您的代碼的一致縮進(就像我在編輯中完成的那樣)。 –

回答

0

如果使用int數組,就可以解決這個問題更容易。

int[] points = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; 

此數組的索引是每個點。例如,如果您獲得字符'R',則將點1加到點[9]。 如果你得到了字符'O',加1到點[6]。

如果你輸入你的名字,數組中的值將是這樣的。

[0,1,2,3,4,5,6,7,8,9] - 索引

{0,2,0,0,0,1,1,0,1, 1} - 值

如果值爲0,則該值的索引將丟失數字。 總分將是每個[索引*值]的總和。

1

而是保持開關殼體的,這將是更好的每個字符的值存儲在26個元素的陣列。

你可以遍歷數組和元素添加到兩個臨時數組這種情況下 - valuesFoundInNameArray和ValuesNotFoundInTheNameArray