繁体   English   中英

输出两个整数之间偶数的总和

[英]Output sum of even numbers between two integers

我正在我的一门大学课程中研究一个简单的 JAVA 问题。 我被这个程序难住了。 我将展示我目前所拥有的,并给出我必须回答的问题。 我也在 StackOverflow 上查看了一个类似的问题,但这不是同一个问题,所以它没有帮助。 我需要编写的程序是:

编写一个程序,使用“while”循环来执行以下步骤:

a.) 提示用户输入两个整数:'firstNum' 和 'secondNum'(firstNum 必须小于 secondNum)

b.) 输出'firstNum' 和'secondNum' 之间的所有奇数。

c.) 输出 'firstNum' 和 'secondNum' 之间所有偶数的总和。

这就是我到目前为止所拥有的......(我仍然需要计算偶数并将它们相加)

//import classes
import java.util.*;

public class chapter5no9
{
    static Scanner console = new Scanner(System.in);

    public static void main(String[] args)
    {

    //Part A
    int firstNum;
    int secondNum;
    int sumEven;

    System.out.println("Please enter an integer: ");
    firstNum = console.nextInt();

    System.out.println("Please enter another integer less than the first integer: ");
    secondNum = console.nextInt();

    //Part B
    if (firstNum < secondNum)
    {
        System.out.print("Your second number is greater than the first.  So Please re-enter: ");
        secondNum = console.nextInt();
    }
    else
    {
        System.out.print("Odd Numbers: ");
        firstNum++;
        while (firstNum > secondNum)
        {
            if (secondNum % 2 != 0)
            {
                System.out.print(" " + secondNum);
            }
            secondNum++;
        }

        System.out.println();
        System.out.print("Sum of Even Numbers: ");
        firstNum++;
        while (firstNum > secondNum)
        {
            if (secondNum % 2 != 0)
            {
                System.out.print(" " + secondNum);
            }
            secondNum++;
        }
    }
}

}

我创建了 loopCounter 变量来处理所需的迭代,而无需更改用户输入的值。 对您的代码进行了以下更改。

A 部分:添加了一个 while 循环来验证用户输入。 还更改了 if 语句中的逻辑。

B部分:用一个循环打印奇数和总偶数

   //Part A
   int firstNum;
   int secondNum;
   int sumEven=0;

   System.out.println("Please enter an integer: ");
   firstNum = input.nextInt();

   System.out.println("Please enter another integer less than the first integer: ");
   secondNum = input.nextInt();

   //Part B

   //validate input in a loop
   while(true)
   {
     if (firstNum > secondNum)
     {
         System.out.print("Your second number is larger than the first.  So Please re-enter: ");
         secondNum = input.nextInt();
     }
     else
     {
         break;
     }
   }

       System.out.print("Odd Numbers: ");
       int loopCounter=firstNum;
       while(loopCounter<secondNum)
       {
         if (loopCounter%2!=0)
         {
             System.out.print(" " + loopCounter);
         }//end if
         else
         {
             sumEven+=loopCounter;
         }//end else
         loopCounter++;
       }

       System.out.println();
       System.out.print("Sum of Even Numbers: ");    
       System.out.print(sumEven);

   }

我会将检查输入和计算结果这两个问题分开。 这是我如何计算它:

int sum = IntStream.rangeClosed(firstNum, secondNum).filter(i -> i % 2 == 0).sum();

问题出在你的逻辑上。 你有这个 if 语句:

if (firstNum < secondNum)
{
    System.out.print("Your second number is greater than the first.  So Please re-enter: ");
    secondNum = console.nextInt();
}

它检查第二个数字是否大于第一个(您希望它是),然后要求他们重新输入。 您想检查if (secondNum < firstNum) 您将需要反转所有将secondNumfirstNum进行比较的whileif语句。

然后你有这个if (secondNum % 2 != 0)来检查奇数,这是正确的,但你复制粘贴它来检查偶数,这不起作用,你也需要改变它。

然后,您在循环中输出所有偶数整数,当您真的想将其添加到evenSum变量时,并在循环结束时输出:

System.out.println("The sum of all even integers is: " + evenSum);

这应该足以帮助您,我不会为您写作业,这不是我们在这里所做的。

package hello.world;
import java.util.Scanner;

public class HelloWorld {


    public static void main(String[] args) {

      Scanner sc = new Scanner(System.in); 
      int number ;
      int X = 0;
      System.out.print("enter a number plz : ");
      number = sc.nextInt();
      while (X <= number){  
        System.out.println(X);
        X ++;
      }  
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM