「Java案例」求两数间的奇数和

112 阅读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 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