Java 如何使用用户输入而不是无限循环来计算While循环?

Java 如何使用用户输入而不是无限循环来计算While循环?,java,while-loop,Java,While Loop,这是为了帮助我完成家庭作业,但网站不允许我这样标记。仅供参考:除了while类型之外,我还没有学习循环。我需要一些关于Java的while循环计数程序的帮助。我是编程新手,所以我会尽力解释这一点。程序将要求用户输入起始编号、结束编号和增量。我希望它能够执行4种类型的场景。前三种类型工作正常,但最后一种情况无限循环。如何更改代码以满足所有4种情况?任何解释或帮助都将不胜感激。下面是场景,之后是我的代码 起始编号结束编号,开始编号按递增顺序倒计时至结束编号并停止: 你想从哪里开始计数? 44 你要我

这是为了帮助我完成家庭作业,但网站不允许我这样标记。仅供参考:除了while类型之外,我还没有学习循环。我需要一些关于Java的while循环计数程序的帮助。我是编程新手,所以我会尽力解释这一点。程序将要求用户输入起始编号、结束编号和增量。我希望它能够执行4种类型的场景。前三种类型工作正常,但最后一种情况无限循环。如何更改代码以满足所有4种情况?任何解释或帮助都将不胜感激。下面是场景,之后是我的代码

  • 起始编号<结束编号,按增量向上计数至结束编号并停止: 你想从哪里开始计数? 35 你要我数到多少? 60 增量? 5. 计数 35 40 45 50 55 六十

  • 起始编号>结束编号,开始编号按递增顺序倒计时至结束编号并停止: 你想从哪里开始计数? 44 你要我数到多少? -22 增量? 11 计数 44 33 22 11 0 -11 -二十二

  • 起始编号=结束编号,仅输出该编号: 你想从哪里开始计数? 99 你要我数到多少? 99 增量? 3. 计数 九十九

  • 增量不会均匀地向上或向下计数到结束数。它应该在到达结束号码之前停止: 你想从哪里开始计数? 23 你要我数到多少? 46 增量? 6. 计数 23 29 35 41

  • 导入java.util.Scanner

    公共类计数{

    public static void main(String[] args) {
    
        int counter, limit, inc;
    
        Scanner input = new Scanner(System.in);
    
        System.out.println("Where do you want to start counting?");
        counter = input.nextInt();
    
        System.out.println("How far do you want me to count?");
        limit = input.nextInt();
    
        System.out.println("Increment?");
        inc = input.nextInt();
    
        System.out.println("COUNTING");
        System.out.println(counter);
    
        while (counter != limit) {
            if (counter < limit) {
                counter = counter + inc;
                System.out.println(counter);
    
            }
            else if (counter > limit) {
                counter = counter - inc;
                System.out.println(counter);
    
            }
    
        }
    
    }
    
    publicstaticvoidmain(字符串[]args){
    国际计数器有限公司;
    扫描仪输入=新扫描仪(System.in);
    System.out.println(“您想从哪里开始计数?”);
    计数器=input.nextInt();
    System.out.println(“你想让我数到多少?”;
    limit=input.nextInt();
    System.out.println(“增量?”);
    inc=input.nextInt();
    系统输出打印项次(“计数”);
    系统输出打印项次(计数器);
    while(计数器!=限制){
    if(计数器<极限){
    计数器=计数器+有限公司;
    系统输出打印项次(计数器);
    }
    否则如果(计数器>限制){
    计数器=计数器-公司;
    系统输出打印项次(计数器);
    }
    }
    }
    
    }你说:

     while (counter != limit) {
        if (counter + inc < limit) {
            counter = counter;
            System.out.println(counter);
    
        } else if (counter - inc > limit) {
            counter = counter;
            System.out.println(counter);
    
        }
    
    while(计数器!=限制){
    如果(计数器+inc<限制){
    计数器=计数器;
    系统输出打印项次(计数器);
    }否则如果(计数器-inc>限制){
    计数器=计数器;
    系统输出打印项次(计数器);
    }
    
    如果计数器!=limit,这会告诉计算机继续运行。计数器几乎肯定永远不会==limit。想象一下:limit=43。如果你增加6,那么你开始计算的数字变成43的几率只有六分之一。(42-38+6!=43),(37+6==43)。有很多方法可以在没有计数器==limit的情况下继续计数(以打破while循环)

    尝试将while循环放入if语句中:

    //edited to resolve issue brought up in comments
    if (counter < limit) {
        while (counter < limit + inc) {
            //until counter is bigger than limit, count up by inc
            counter += inc;
            System.out.println(counter);
        }
    } else if (counter > limit) {
        while (counter > limit - inc) {
            //until counter is smaller than limit, count down by inc
            counter -= inc;
            System.out.println(counter);
        }
    }
    
    //编辑以解决评论中提出的问题
    if(计数器<极限){
    同时(计数器<限制+公司){
    //在计数器大于极限值之前,按inc计数
    计数器+=有限公司;
    系统输出打印项次(计数器);
    }
    }否则如果(计数器>限制){
    同时(计数器>限制-包括){
    //直到计数器小于限制,由inc倒计时
    柜台公司;
    系统输出打印项次(计数器);
    }
    }
    
    不要检查不等式
    计数器!=limit
    ,而是做两个例子。如果
    ,你似乎已经理解了
    。有一个例子,你可以检查
    计数器=limit
    (倒计时).这对你来说应该足够了,但如果你真的需要,我会提供代码。我鼓励你在查看之前自己再试一次

    //(...)
    System.out.println(counter);
    boolean countingUp = counter <= limit; //if this variable is true, we are counting up
    if (countingUp == true) {
        while(counter <= limit) {
            counter = counter + inc;
            System.out.println(counter);
        }
    } else {
        while(counter >= limit) {
            counter = counter + inc;
            System.out.println(counter);
        }
    }
    //End of program.
    
    /(…)
    系统输出打印项次(计数器);
    
    boolean countingUp=counter如果需要,可以在while循环中使用break

    while (counter != limit) {
        if (counter < limit) {
            if (counter + inc <= limit){
                counter = counter + inc;
                System.out.println(counter);
            } else {
                break;
            }
        }
        else if (counter > limit) {
            if (counter - inc >= limit) {
                counter = counter - inc;
                System.out.println(counter);
            } else {
                break;
            }
        }
    }
    
    while(计数器!=限制){
    if(计数器<极限){
    if(计数器+inc限制){
    如果(计数器-inc>=限制){
    计数器=计数器-公司;
    系统输出打印项次(计数器);
    }否则{
    打破
    }
    }
    }
    

    break将停止循环并在循环后继续执行代码。

    谢谢,此代码肯定会停止无限循环。我现在遇到的问题是,增量没有均匀地达到极限,它的加法或减法(取决于场景)有一次超出限制。我会继续处理它,但至少它会停止。@user3404250啊,我现在看到了。当你最后一次开始while循环(问题)时,它是真的。然后它添加inc并将其变为false,但必须通过打印计数器来完成。因此,你需要执行
    while(counter
    while(counter>limit-inc)
    这使得它两次超过了限制(假设我正确读取了您的更改),但是它帮助我找到了如何修复它。当我将第一次更改为(counter+inc=limit)时,我得到了正确的输出。谢谢你的帮助!谢谢,这确实停止了无限循环。但是,在每个场景中,它都会计算一次超过限制。我会继续使用它。尝试一些不同的方法很好。