我正在尝试编写一个简单且无用的程序来生成所有整数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("");
}
}
答案 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