java - 在while循环java中打印出偶数和奇数的总和
问题描述
import java.util.*;
public class Eigth {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int x=0, number1, number2;
System.out.print("Enter first number: ");
number1=s.nextInt();
if(number1 == x) {
System.out.println("Error");
System.exit(0);
}
System.out.print("Enter second number: ");
number2=s.nextInt();
if (number2 == x) {
System.out.println("Error");
System.exit(0);
}
if(number2 <= number1) {
System.out.println("Error");
System.exit(0);
}
while (number1 <= number2) {
if ((number1 % 2) == 0)
System.out.println("\"" + number1 + " IS EVEN\"");
else
System.out.println("\"" + number1 + " IS ODD\"");
number1++;
}
int evenSum = 0, oddSum = 0, i = number1;
while(i <= number2) {
if(i % 2 == 0) {
evenSum += i;
}
else {
oddSum += i;
}
i++;
}
System.out.println("Sum of Even Numbers in Loop: " + evenSum);
System.out.println("Sum of Odd Numbers in Loop: " + oddSum);
System.out.println("Sum of All Numbers in Loop: " + evenSum + oddSum);
}
}
我必须提示用户输入两个数字,输入的第一个数字是循环的起点,输入的第二个数字是循环的起点。如果第一个或第二个数字是 0,我必须打印出错误。如果第二个数字不大于第一个,我必须做同样的事情。然后,我必须打印出循环中所有偶数、奇数和总和的总和。但是,使用我拥有的代码,它打印为所有偶数的总和:0,所有奇数的总和:0,以及所有数字的总和:0,无论我输入什么数字。我不确定在哪里我错了。
解决方案
在进行范围检查之后number1
,number2
您可以通过使用剩余值作为数组的索引来计算值来稍微缩短算法。
int[] sums = new int[2];
while (number1 <= number2) {
sums[number1 % 2] += number1++;
}
System.out.println("Sum of Even Numbers in Loop: " + sums[0]);
System.out.println("Sum of Odd Numbers in Loop: " + sums[1]);
System.out.println("Sum of All Numbers in Loop: " + (sums[0] + sums[1]));
推荐阅读
- unit-testing - 用于文件创建的表驱动测试
- html - 想让无内容的 div 响应相邻 div 的高度
- algorithm - 从 N 个整数数组中选择有序三元组的不同方法
- c# - 是否有任何类型的内联构造可以用来使外部方法调用可等待?
- google-maps - 谷歌静态地图拒绝某些域的请求
- c# - 如何在 Windows 10 中可靠地调用屏幕键盘?
- google-bigquery - 如何使用 BigQuery 在 INT64 和二进制 STRING 之间进行转换?
- ios - 无法识别的选择器发送到实例 0x7f995be07650
- javascript - 如何从操作中访问状态属性?
- mybatis - Mybatis Generator 未将表名映射到驼峰式大小写