【问题标题】:Android Java While loop not executingAndroid Java While循环未执行
【发布时间】:2013-11-17 10:41:32
【问题描述】:

在我的 javacode 中,我正在使用 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;
    }
}

【问题讨论】:

  • 我现在就更新....
  • 输入是字符串形式的文本,输出是数字的总和,直到总和为一位,对吧??这就是你想要的吗??
  • 发布方法 value10().
  • no.. 我的问题出在 while 循环上...当我给出 sum10>9 时它工作得很好...当我给出 sum10!=11 和 sum10!=22 之类的两个条件时它不能正常工作..这就是问题...所以我只需要在值大于 9 而不是 11 和 22 时执行此过程...
  • sum10 永远不会大于 9

标签: java android loops while-loop


【解决方案1】:

我会通过以下方式实现它

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;
    }
}

【讨论】:

    【解决方案2】:
     while ((sum10!=11) && (sum10!=22) && (sum10>9))
    {
    }
    

    做起来

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

    将其更改为 if 条件..我不明白你为什么将它写在 while 条件中的原因..你将从 findDigitSum10(sum10) 得到答案) 总是小于 10..

    【讨论】:

    • 因为 findDigitSum10(57) 是 12,而不是 3。
    【解决方案3】:

    设置一个条件来检查数字的值。如果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 loop/findDigitSum10 根本不会执行