计算缺失的数量

时间:2013-11-25 07:59:58

标签: java android xml

我正在开发一个Android应用程序,这是一个数字命理应用程序。其中计算名称的值是:

A,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
我,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;
}

2 个答案:

答案 0 :(得分:1)

最好将每个字符的值存储在26个元素的数组中,而不是保持开关大小写。

在这种情况下,您可以迭代该数组并将该元素添加到两个临时数组中的任何一个 - valuesFoundInNameArray和ValuesNotFoundInTheNameArray

答案 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} - 值

如果value为0,则该值的索引将缺少数字。 总分数将是每个[指数*值]的总和。