在计算某个整数的除数 # 时,我的程序无法跳出“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”? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

计算整数的除数而不只是枚举它们(或估计如果不可能)? [关闭]

switch用法

c 语言中除号仅用于整数间吗?

Haskell - 寻找整数的除数

“/”在c语言中,若是小数除以整数,答案最后是取整,还是有小数呀😄?

LeetCode第二十九题-整数除法