首页 > 解决方案 > 在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,无论我输入什么数字。我不确定在哪里我错了。

标签: java

解决方案


在进行范围检查之后number1number2您可以通过使用剩余值作为数组的索引来计算值来稍微缩短算法。

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]));

推荐阅读