![](/img/trans.png)
[英]How to find the sum of the numbers that are between the two given integers in Java
[英]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)
。 您将需要反转所有将secondNum
与firstNum
进行比较的while
和if
语句。
然后你有这个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.