Android Java While循环未执行

3
在我的Java代码中,我使用while循环将数值相加并将其变为一位数字...例如,如果是2010年,则2 + 0 + 1 + 0 = 3,如果是2345年,则2 + 3 + 4 + 5 = 14,然后1 + 4 = 5,就像这样...但同时,这个过程对于两个数字来说是无效的..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;
    }
}

我的问题出在while循环上...当我给定像sum10>9这样的条件时,它可以完美地工作...但是当我给定两个条件,如sum10!=11 和 sum10!=22时,它就不能正确地工作了...这就是问题所在...所以我需要只在值大于9而不等于11和22时才执行这个过程... - roshanpeter
检查一下我的答案,它在我的端上运行良好。 - Shankari vatsalkumar
让我检查一下.. Shyanku.. 感谢您的回复。 - roshanpeter
Shanku如果值为10,它不会工作... 如果值是10,则结果必须为1,但它显示的是10... - roshanpeter
在我的端口测试正常。请问你输入了什么? - Shankari vatsalkumar
显示剩余6条评论
3个回答

0
我会按照以下方式实现。
public static void main(String[] args) {
    System.out.println(getSum(12));
    System.out.println(getSum(11));
}
public static long getSum(int no){      
    if(no/10 == 0 || no%11 == 0){
        return no;
    }else{
        return getSum(no/10) + no%10;
    }
}

0
 while ((sum10!=11) && (sum10!=22) && (sum10>9))
{
}

让它变成这样

if ((sum10 != 11) && (sum10 != 22) )
{
   sum10 = findDigitSum10(sum10);
}

将其更改为if条件。我不明白为什么你要用while条件来编写它。从findDigitSum10(sum10)得到的答案始终小于10。

因为findDigitSum10(57)的结果是12,而不是3。 - user253751

0

设置一个条件来检查数字的值。如果n大于99,则添加数字,否则按原样显示数字。

将您的方法更新为以下内容:

private long findDigitSum10(long n) {

    // TODO Auto-generated method stub
    int sum10 = 0;
    long temp = n;

    if (temp > 99) {

        while (n != 0) {
            sum10 += n % 10;
            n = n / 10;
        }
    }

    else {
        return n;
    }

    return sum10;
}

value10(name10[i]) 永远不会返回大于9的值,因此 while 循环 / findDigitSum10 根本没有执行 - Shakeeb Ayaz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接