私のJavaコードでは、値が加算されて1桁になるwhileループを使用しています..たとえば、2010の場合は2 + 0 + 1 + 0 = 3、2345の場合は2 + 3 + 4です。 +5 = 14 の場合、1 + 4 = 5 のように ... しかし同時に、このプロセスは 2 つの数値には有効ではありません.. 11 & 22 来るべき値が 11 と 22 の場合、1+1 = のような追加の追加はありません。 2 または 2+2 =4; 彼らはそれを11と22の両方として表示する必要があります...私は以下のようなコードを書きましたが、機能していません....誰かがコードをチェックして助けてください...間違いは何ですか...
private long getSum10(String text)
{
long sum10 = 0;
char[] name10 = new char[text.length()];
name10 = text.toCharArray();
for (int i = 0; i < text.length(); i++)
{
sum10 += value10(name10[i]);
}
while ((sum10 != 11) && (sum10 != 22) && (sum10 > 9))
{
sum10 = findDigitSum10(sum10);
}
return sum10;
}
private long findDigitSum10(long n)
{
int sum10 = 0;
while (n != 0)
{
sum10 += n % 10;
n = n / 10;
}
return sum10;
}
private int value10(char a)
{
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;
}
}