案例解析
求两数间的奇数和
编写一个程序,输入两个整数,然后输出这两个整数之间的所有奇数,并计算这些奇数的总和。
# 源文件保存为“OddNumberSum.java”
import java.util.Scanner;
public class OddNumberSum {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入第一个整数:");
int num1 = scanner.nextInt();
System.out.print("请输入第二个整数:");
int num2 = scanner.nextInt();
// 确定较小和较大的数
int start = Math.min(num1, num2);
int end = Math.max(num1, num2);
int sum = 0;
System.out.print("奇数有:");
// 遍历区间内的所有数
for (int i = start; i <= end; i++) {
if (i % 2 != 0) { // 判断是否为奇数
System.out.print(i + " ");
sum += i;
}
}
System.out.println("\n奇数和为:" + sum);
scanner.close();
}
}
运行结果
请输入第一个整数:5
请输入第二个整数:10
奇数有:5 7 9
奇数和为:21
代码解析:
- 输入处理:使用Scanner类获取用户输入的两个整数
- 确定范围:使用Math.min和Math.max确定起始和结束数
- 初始化累加器:sum变量用于存储奇数和
- 循环遍历:for循环遍历区间内所有整数
- 奇数判断:使用取模运算i%2!=0判断奇数
- 累加求和:符合条件的奇数累加到sum中
- 结果输出:先输出所有奇数,再输出它们的和
使用while循环实现
# 源文件保存为“OddSumWhile.java”
public class OddSumWhile {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入第一个整数:");
int num1 = scanner.nextInt();
System.out.print("请输入第二个整数:");
int num2 = scanner.nextInt();
int start = Math.min(num1, num2);
int end = Math.max(num1, num2);
int sum = 0;
int current = start;
System.out.print("奇数有:");
while (current <= end) {
if (current % 2 != 0) {
System.out.print(current + " ");
sum += current;
}
current++;
}
System.out.println("\n奇数和为:" + sum);
scanner.close();
}
}
运行结果
请输入第一个整数:5
请输入第二个整数:10
奇数有:5 7 9
奇数和为:21
代码特点
- 使用while循环替代for循环
- 更直观地展示循环控制流程
- 适合理解循环变量的变化
操作练习题
求两数间的偶数和
要求:
- 修改程序计算两数间所有偶数的和
- 比较奇数和与偶数和的大小关系
参考代码:
# 源文件保存为“OddNumberSum.java”
import java.util.Scanner;
public class OddNumberSum {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入第一个整数:");
int num1 = scanner.nextInt();
System.out.print("请输入第二个整数:");
int num2 = scanner.nextInt();
// 确定较小和较大的数
int start = Math.min(num1, num2);
int end = Math.max(num1, num2);
int oddsum = 0;
int evenSum = 0;
// 遍历区间内的所有数
for (int i = start; i <= end; i++) {
if (i % 2 != 0) { // 判断是否为奇数
oddsum += i;
} else {
evenSum += i;
}
}
System.out.println("\n奇数和为:" + oddsum);
System.out.println("偶数和为:" + evenSum);
System.out.println("奇数和与偶数和的差:" + Math.abs(oddsum - evenSum));
scanner.close();
}
}
运行结果
请输入第一个整数:5
请输入第二个整数:10
奇数和为:21
偶数和为:24
奇数和与偶数和的差:3
输出区间内的奇数个数
要求:
- 统计区间内奇数的个数
- 计算奇数的平均值
参考代码:
# 源文件保存为“OddNumberSum.java”
import java.util.Scanner;
public class OddNumberSum {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入第一个整数:");
int num1 = scanner.nextInt();
System.out.print("请输入第二个整数:");
int num2 = scanner.nextInt();
// 确定较小和较大的数
int start = Math.min(num1, num2);
int end = Math.max(num1, num2);
int oddsum = 0;
int count = 0;
// 遍历区间内的所有数
for (int i = start; i <= end; i++) {
if (i % 2 != 0) { // 判断是否为奇数
oddsum += i;
count++;
}
}
System.out.println("奇数个数:" + count);
System.out.println("奇数平均值:" + (count == 0 ? 0 : (double)oddsum / count));
scanner.close();
}
}
运行结果
请输入第一个整数:5
请输入第二个整数:10
奇数个数:3
奇数平均值:7.0
找出区间内最大的奇数
要求:
- 找出区间内最大的奇数
- 如果没有奇数,给出提示
参考代码:
# 源文件保存为“OddNumberSum.java”
import java.util.Scanner;
public class OddNumberSum {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入第一个整数:");
int num1 = scanner.nextInt();
System.out.print("请输入第二个整数:");
int num2 = scanner.nextInt();
// 确定较小和较大的数
int start = Math.min(num1, num2);
int end = Math.max(num1, num2);
int maxOdd = Integer.MIN_VALUE;
boolean hasOdd = false;
// 遍历区间内的所有数
for (int i = start; i <= end; i++) {
if (i % 2 != 0) {
hasOdd = true;
if (i > maxOdd) {
maxOdd = i;
}
}
}
if (hasOdd) {
System.out.println("最大奇数:" + maxOdd);
} else {
System.out.println("区间内没有奇数");
}
}
}
运行结果
请输入第一个整数:5
请输入第二个整数:10
最大奇数:9