
在许多交互式应用程序中,程序需要根据用户的选择来决定是否继续执行某个操作。一个常见的场景是,程序提示用户输入一系列数据,并在每次输入后询问用户是否还有更多数据需要输入。这要求我们设计一个可靠的“是/否”确认机制,并将其有效地整合到主程序的循环结构中。本文将围绕一个实际案例——计算多件商品的总价,来演示如何实现一个健壮的Y/N确认方法以及如何正确地控制主程序循环。
我们的目标是创建一个名为getYNConfirm的方法,它能向用户显示一个提示,然后等待用户输入'Y'(是)或'N'(否)。此方法必须满足以下要求:
import java.util.Scanner;
public class MyInteractiveApp {
/**
* 获取用户的是/否确认。
* 循环直到用户输入 'Y'/'y' 或 'N'/'n'。
*
* @param pipe 用于读取用户输入的Scanner对象。
* @param prompt 显示给用户的提示信息。
* @return 如果用户输入 'Y'/'y' 返回 true (表示继续),如果输入 'N'/'n' 返回 false (表示停止)。
*/
public static boolean getYNConfirm(Scanner pipe, String prompt) {
String input;
boolean isValidInput; // 标记输入是否有效
do {
System.out.print(prompt + " [Y/N]: "); // 使用 print 保持光标在同一行,并提供提示
input = pipe.nextLine().trim(); // 读取用户输入并去除首尾空格
if (input.equalsIgnoreCase("Y")) {
isValidInput = true;
return true; // 用户选择“是”,返回 true
} else if (input.equalsIgnoreCase("N")) {
isValidInput = true;
return false; // 用户选择“否”,返回 false
} else {
isValidInput = false; // 输入无效
System.out.println("无效输入。请输入 'Y' 或 'N'。您输入的是: " + input);
}
} while (!isValidInput); // 循环直到输入有效
// 理论上此行代码不会被执行,因为 do-while 循环会确保在有效输入时提前返回。
// 但为了代码完整性,可以添加一个默认返回值或抛出异常。
return false; // 默认返回,以防万一(实际不会到达)
}
// ... 其他方法和 main 方法将在下一节介绍 ...
}代码解析:
现在我们已经有了健壮的getYNConfirm方法,接下来将其集成到主程序中,实现商品价格的循环输入和总价计算。
立即学习“Java免费学习笔记(深入)”;
在主程序中,我们假设存在一个SafeInput类,其中包含一个getRangedDouble方法,用于安全地获取指定范围内的双精度浮点数。这个方法也应该接收一个Scanner实例,并正确处理其内部的nextLine()调用,以避免输入缓冲区问题。
// SafeInput.java (用于演示,实际项目中可能更复杂)
class SafeInput {
/**
* 从用户获取一个指定范围内的双精度浮点数。
*
* @param pipe 用于读取用户输入的Scanner对象。
* @param prompt 显示给用户的提示信息。
* @param low 允许的最小值。
* @param high 允许的最大值。
* @return 用户输入的有效双精度浮点数。
*/
public static double getRangedDouble(Scanner pipe, String prompt, double low, double high) {
double value = 0;
boolean done = false;
String trash;
do {
System.out.print(prompt + " [" + String.format("%.2f", low) + " - " + String.format("%.2f", high) + "]: ");
if (pipe.hasNextDouble()) {
value = pipe.nextDouble(); // 读取 double
pipe.nextLine(); // 消费掉数字后的换行符,非常重要!
if (value >= low && value <= high) {
done = true;
} else {
System.out.println("输入值超出范围。请输入 " + String.format("%.2f", low) + " 到 " + String.format("%.2f", high) + " 之间的数值。");
}
} else {
trash = pipe.nextLine(); // 消费掉无效输入
System.out.println("无效输入。请输入一个数字。您输入的是: " + trash);
}
}以上就是Java方法循环控制:实现健壮的Y/N确认机制与累加器的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号