Java实现:求输入中三个连续整数的最大和(禁用数组,999终止输入)
解决连续三数最大和的Java实现(无数组)
需求回顾
接收数字输入直到输入999为止(999不计入):
- 若输入数字≥3个,计算并输出三个连续输入数字的最大和
- 若输入数字不足3个,输出所有输入数字的总和
- 禁止使用数组存储输入数据
示例:输入7 2 9 8 7 6 7 5 9 999时,最大和为24(由9+8+7得到)
实现思路
因为不能用数组,我们只需要维护最近输入的3个数字,通过滚动更新这三个变量来计算连续三数之和,同时记录输入总数、总和以及当前最大三数和:
- 用三个变量
prev2、prev1、current分别保存倒数第三、倒数第二、最新输入的数字 - 每输入一个有效数字(非999),更新总和与输入计数
- 当输入计数≥3时,计算当前三数之和,与
maxSum比较并更新最大值 - 循环结束后,根据输入计数决定输出最大三数和还是总和
完整Java代码
import java.util.Scanner; public class MaxThreeSum { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); // 初始化变量:保存最近三个输入的数字 int prev2 = 0; int prev1 = 0; int current = 0; int sumCount = 0; // 统计有效输入数字的数量 int totalSum = 0; // 所有有效数字的总和 int maxSum = Integer.MIN_VALUE; // 初始化最大三数和为最小值 while (true) { int num = scanner.nextInt(); if (num == 999) { break; // 遇到999终止输入 } sumCount++; totalSum += num; // 滚动更新最近三个数字 if (sumCount == 1) { prev2 = num; } else if (sumCount == 2) { prev1 = num; } else { current = num; // 计算当前三数之和 int currentSum = prev2 + prev1 + current; // 更新最大和 if (currentSum > maxSum) { maxSum = currentSum; } // 滚动变量:prev2变为原来的prev1,prev1变为当前数字 prev2 = prev1; prev1 = current; } } // 根据输入数量决定输出内容 if (sumCount < 3) { System.out.println(totalSum); } else { System.out.println(maxSum); } scanner.close(); } }
代码关键点说明
- 滚动变量更新:当输入第3个及以后的数字时,
prev2和prev1会向前滚动,始终保持存储最近的三个数字,无需数组即可追踪连续序列 - 边界处理:输入不足3个时直接输出总和,避免了无效的三数和计算
- 初始化细节:
maxSum初始化为Integer.MIN_VALUE,确保第一个三数和能正确覆盖初始值
内容的提问来源于stack exchange,提问作者orbarkalifa
相关产品推荐
相关产品推荐

