在计算某个整数的除数 # 时,我的程序无法跳出“While Loop”? [关闭]
Posted
技术标签:
【中文标题】在计算某个整数的除数 # 时,我的程序无法跳出“While Loop”? [关闭]【英文标题】:My program cannot break out of 'While Loop' when calculating # of divisors for a certain integer? [closed] 【发布时间】:2013-12-28 08:20:27 【问题描述】:当我在 Eclipse 中运行程序时,在用户输入某个整数继续前进并实际计算除数并用计数打印出来后,我无法跳出 while 循环。
/*
* This program reads a positive integer from the user.
* It counts how many divisors that number has, and then it prints the result.
* Also prints out a ' . ' for every 1000000 numbers it tests.
*/
import java.util.Scanner;
public class forloopTEST1
public static void main(String[] args)
Scanner input = new Scanner(System.in);
int N; //A positive integer entered by the user.
// Divisor of this number will be counted.
int testDivisor; // A number between 1 and N that is a possible divisor of N.
int divisorCount; // A number of divisors between 1 to N that have been found.
int numberTested; // Used to count how many possible divisors of N have been tested, When # reached 1000000
//a period is output and the value of numberTested is reset to 0.
/* Get a positive integer from the user */
while (true)
System.out.println("Enter a positive integer: ");
N = input.nextInt();
if (N < 0)
break;
System.out.println("That number is not positive. Please try again.: ");
/* Count divisor, printing ' . ' after every 1000000 tests. */
divisorCount = 0;
numberTested = 0;
for (testDivisor = 1; testDivisor <= N; testDivisor++)
if ( N % testDivisor == 0 );
divisorCount++;
numberTested++;
if (numberTested == 1000000)
System.out.println(".");
numberTested = 0;
【问题讨论】:
请查看java中类和变量名的命名约定。 【参考方案1】:看看你的if
声明:
if (N < 0)
break;
如果用户输入 negative 数字,您将跳出循环 - 但如果用户输入 positive 数字,您想跳出:
if (N > 0)
break;
(我没有查看其余代码,但这就是 while
循环的问题所在。)
或者,您可以使用:
int N = input.nextInt();
while (N < 0)
System.out.println("That number is not positive. Please try again.: ");
N = input.nextInt();
另外,我建议:
对于if
语句等始终使用大括号,即使正文是单个语句
在首次使用时声明局部变量,而不是在方法顶部声明 all
遵循 Java 命名约定(N
应该是 n
,或者最好是一个更具描述性的名称)
【讨论】:
对不起,它不起作用!我的意思是它确实从 while 循环中中断,但它不会在 while 循环之后的下一部分继续计算除数。如果您可以快速扫描其余代码并帮助我确定我做错了什么,我将非常感激。谢谢ps还在学习:) @Shaz:您的问题是关于while
循环的 - 最好在每个帖子中问一件事。既然你已经克服了这一点,我建议你问一个关于除法部分的新问题——为此,你可以摆脱用户输入,只选择一个不起作用的例子。以上是关于在计算某个整数的除数 # 时,我的程序无法跳出“While Loop”? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
计算整数的除数而不只是枚举它们(或估计如果不可能)? [关闭]