循环查找数字总和

时间:2013-05-08 22:39:48

标签: java

我正在尝试编写一个简单且无用的程序来生成所有整数1>< 1000的列表,其中数字的总和为11.每次运行时,我都会进入无限循环。我尝试过不同的事情 - for(){}while(){},在循环计数器达到500之后添加if(count>500){break;}来停止它......仍然没有...我要去哪里错了吗?

提前致谢

    //loops through all numbers whose sum of digits is 11
    for(int number = 29; number < 1000; number++) {
        //checks the values of the 100,10,and 1 position
        int hPlace = number / 100; number = number - (hPlace * 100);
        int tPlace = number / 10;  number = number - (tPlace * 10);
        int oPlace = number;
        //sum of digits
        int i = hPlace + tPlace + oPlace;


        //prints if sum of digits is 11
        int count = 0;
        if (i == 11) {
            count++;
            System.out.print(i + " ");
        }

        //new line after every 10 numbers -- just for formatting
        if (count % 10 == 0) {
            System.out.println("");
        }
      }

7 个答案:

答案 0 :(得分:4)

您正在为for使用相同的变量作为控制器。尝试将for结构中的控制器变量从number更改为number1

您正在此处更改变量:

                           ---------------------------------
int hPlace = number / 100; number = number - (hPlace * 100);
                           ---------------------------------

答案 1 :(得分:2)

不要这样做

number = number - (hPlace * 100);

当您的情况取决于number

for(int number = 29; number < 1000; number++)

答案 2 :(得分:0)

因为你有两个嵌套的for循环,它们都使用与计数器相同的变量

for(int number = 29; number < 1000; number++) {
        for(number = 29;number < 930;number++) {

答案 3 :(得分:0)

//loops through all numbers whose sum of digits is 11
    for(int number = 29; number < 1000; number++) {
        //checks the values of the 100,10,and 1 position
        int hPlace = number / 100; 
        **number** = number - (hPlace * 100);     // PROBLEM!!!
        int tPlace = number / 10;  
        **number** = number - (tPlace * 10);     // PROBLEM!!!
        int oPlace = number;
        //sum of digits
        int i = hPlace + tPlace + oPlace;


        //prints if sum of digits is 11
        int count = 0;
        if (i == 11) {
            count++;
            System.out.print(i + " ");
        }

        //new line after every 10 numbers -- just for formatting
        if (count % 10 == 0) {
            System.out.println("");
        }
      }

答案 4 :(得分:0)

  

if(count> 500){break;}在循环计数器达到500后停止它......仍然没有

这不会奏效,因为您每次都会以count的初始值重新定标0。因此if将始终返回false。

另外,以下几行:

 int hPlace = number / 100; number = number - (hPlace * 100);
 int tPlace = number / 10;  number = number - (tPlace * 10);

修改number,这是你的循环变量。如果以意外方式修改循环变量,则循环将无法正确执行。而是将值复制到另一个变量。

答案 5 :(得分:0)

不要在循环内更改循环控制变量的值,否则可能会导致危险的事情。而是将值复制到一个新变量中并在循环中使用它。

答案 6 :(得分:0)

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class SumDigits    
{
public static void main(String args[])throws Exception
{
    BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
    System.out.print("Enter a Number:");
    String string=br.readLine();
    System.out.println("length of Number:"+string.length());
    int sum=0;
    int number=0;
    for(int i=0;i<=string.length()-1;++i)
    {
        char character=string.charAt(i);
        number=Character.getNumericValue(character);
        sum=sum+number;
    }//for
    System.out.println("Sum of digits of Entered Number:"+sum);
    }//main()
}//class