编写FizzBuzz程序:按规则输出x到y内容(支持多测试用例)
实现FizzBuzz:输出指定区间内的数字或对应标识
需求概述
需要编写Java程序完成以下功能:
- 遍历给定区间
[x, y]内的每个数字,按规则输出:- 同时是3和5的倍数:输出
FizzBuzz - 仅是3的倍数:输出
Fizz - 仅是5的倍数:输出
Buzz - 其他情况:输出数字本身
- 同时是3和5的倍数:输出
- 输入规则:
- 第一行输入测试用例数
T - 第二行输入
2*T个整数,每两个整数为一组,对应一组测试用例的x和y
- 第一行输入测试用例数
- 约束:
1 ≤ T ≤ 10
输入示例:
2 3 15 1 10
(注:示例包含两组测试用例:3-15和1-10)
初始代码问题分析
提供的初始代码仅完成了输入读取和整数转换,没有实现FizzBuzz的核心逻辑,也没有对输入的整数进行分组处理(每组对应x和y)。
完善后的代码
import java.util.Scanner; class TestClass { public static void main(String args[]) throws Exception { Scanner scan = new Scanner(System.in); // 读取测试用例数T int T = Integer.parseInt(scan.nextLine()); // 读取后续的所有整数 String[] inputParts = scan.nextLine().split(" "); // 每组测试用例对应两个整数:x和y,循环处理每组 for (int i = 0; i < 2 * T; i += 2) { int x = Integer.parseInt(inputParts[i]); int y = Integer.parseInt(inputParts[i + 1]); // 遍历x到y的每个数字 for (int num = x; num <= y; num++) { String output = ""; // 判断是否为3的倍数 if (num % 3 == 0) { output += "Fizz"; } // 判断是否为5的倍数 if (num % 5 == 0) { output += "Buzz"; } // 如果output为空,说明不是3或5的倍数,直接输出数字 System.out.println(output.isEmpty() ? num : output); } // 每组测试用例输出后添加空行分隔(可选) System.out.println(); } scan.close(); } }
代码关键说明
- 输入处理:先读取测试用例数
T,再读取后续的整数数组,通过步长为2的循环分组获取每组的x和y - FizzBuzz逻辑:使用字符串拼接的方式,先判断3的倍数追加
Fizz,再判断5的倍数追加Buzz。如果最终字符串为空,说明是普通数字,直接输出数字本身 - 区间遍历:对每组的
x到y进行逐个遍历,按规则输出结果
内容的提问来源于stack exchange,提问作者akshay gupta
相关产品推荐
相关产品推荐

