【问题标题】:While Loop - Sum of even numbers between two inclusive integersWhile 循环 - 两个包含整数之间的偶数之和
【发布时间】:2017-03-05 20:56:34
【问题描述】:

编辑:哈哈,我从没想过你们会这么野蛮。我认为这将是一个大学生来寻求答案的正确地方。如果我不在乎,我为什么会在这里.. 基本上我的问题与其他问题不同,因为我确实需要第一个循环来说明我的偶数,即:10 12 14 16 18 20。我真诚地希望我会获得一些关于如何在第二个循环中恢复 firstNum 的原始值的反馈,而不是期望在几秒钟内被选为分数答案的批评。

我已经实现了一个代码,我在论坛上一个非常相似的问题中看到了它的答案。然而,当我编译它时,我的 sum 代码的输出并没有返回任何内容。它只是空白。我可以得到一些关于我遗漏或做错了什么的反馈吗?谢谢你。 顺便说一句,我只能使用 while 循环。

  System.out.println("Enter an integer:");
  int firstNum = keyboard.nextInt();

  System.out.println("Enter another integer larger than the first one:");
  int secondNum = keyboard.nextInt();

  System.out.println();

  int mod = firstNum % 2;
  int sum = 0;

  if (mod != 0)
  {
    firstNum++;
  }

  System.out.print("Even numbers: ");
  while (firstNum <= secondNum)
  {
    System.out.print(firstNum + " ");
    firstNum += 2;
  }

  System.out.println();

  System.out.print("Sum of even numbers: ");
  while (firstNum <= secondNum)
  {
    System.out.print(sum);
    sum += firstNum;
    firstNum += 2;
  }

【问题讨论】:

  • 您期望返回一些值的 return 语句在哪里?
  • 这段代码的结果不仅仅是空白。所以:请准确地说明您希望看到的内容,并准确地说明您看到的内容。另外,将您的代码转换为 MCVE (stackoverflow.com/help/mcve)
  • 代码运行正常,刚刚用我的IDE确认了一下,不只是空白。
  • firstNum = 10 secondNum = 20 我希望总和为 90。

标签: java loops while-loop sum integer


【解决方案1】:

第一个循环只打印偶数,它不能相加,因为 firstNum 达到了 secondNum。 如果您想保留相同的代码,您只需要添加一个打印偶数的新变量。所以第一个循环会打印偶数,第二个循环会做总和。

例如:

int evenNumber;
Scanner keyboard = new Scanner(System.in);
System.out.println("Enter an integer:");
int firstNum = keyboard.nextInt();

System.out.println("Enter another integer larger than the first one:");
int secondNum = keyboard.nextInt();

System.out.println();

int mod = firstNum % 2;
int sum = 0;

if (mod != 0) {
    firstNum++;
}

evenNumber = firstNum;
System.out.print("Even numbers: ");
while (evenNumber <= secondNum) {
    System.out.print(evenNumber + " ");
    evenNumber += 2;
}

System.out.println();

System.out.print("Sum of even numbers: ");

while (firstNum <= secondNum) {
    sum += firstNum;
    firstNum += 2;
}
System.out.println(sum);

此代码不是最优的,但它符合您的需要。但是如果你想做得更好,你可以这样做:

Scanner keyboard = new Scanner(System.in);
System.out.println("Enter an integer:");
int firstNum = keyboard.nextInt();
System.out.println("Enter another integer larger than the first one:");
int secondNum = keyboard.nextInt();
int total = 0;
System.out.print("Even Numbers: ");
while (firstNum <= secondNum) {
    if (firstNum % 2 == 0) {
        System.out.print(firstNum + " ");
        total += firstNum;
    }
    firstNum++;
}
System.out.println("\nSum: " + total);

【讨论】:

    【解决方案2】:

    在第一次使用期间,您已经更改了 firstNum 的值。所以基本上,当你到达第二个时间时,你甚至都不进入它。 我只需更改第一个循环并删除第二个循环:

    while (firstNum <= secondNum) {
            System.out.print(firstNum + " ");
            sum += firstNum;
            firstNum += 2;
        }
    
        System.out.println();
    
        System.out.print("Sum of even numbers: ");
        System.out.println(sum);
    

    【讨论】:

    • 谢谢,因为我需要说明我需要的实际偶数是多少。但是我可以用另一种方式重写它,这样我就可以将 firstNum 带到它的初始值,同时还声明“偶数:10 12 14 16 18 20”?
    【解决方案3】:

    在你的第一个 while 循环中 -

    while (firstNum <= secondNum){
        System.out.print(firstNum + " ");
        firstNum += 2;
    }
    

    您不断增加变量 firstNum 直到达到 secondNum,因此第二个 while 循环 (firstNum &lt;= secondNum) 的条件永远不会计算为 true。

    实现目标的一个非常简单的方法如下。

    Scanner keyboard = new Scanner(System.in);
    System.out.println("Enter an integer:");
    int firstNum = keyboard.nextInt();
    System.out.println("Enter another integer larger than the first one:");
    int secondNum = keyboard.nextInt();
    int total = 0;
    while(firstNum <= secondNum){
        if(firstNum%2 == 0)
            total += firstNum;
        firstNum++;
    }
    System.out.println("Sum: " + total);
    

    【讨论】:

    • 问题是,这个项目我只能用while循环,不能用for循环。不过,我非常感谢您的反馈
    • 我知道,通读多人提供给我的一些信息并将其实际实施到我的代码中以查看它是否适用于我需要超过 10 秒的时间。我不能立即接受一个回答,我来这里是为了学习。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-07
    • 1970-01-01
    • 2021-07-20
    • 2017-06-25
    • 1970-01-01
    相关资源
    最近更新 更多