gpt4 book ai didi

java - 如何在类型 'char' 的 Switch 中实现特殊字符(?)作为选项?

转载 作者:行者123 更新时间:2023-12-01 06:33:06 27 4
gpt4 key购买 nike

我正在尝试使用 Switch 语句作为菜单界面,我想知道如何包含“帮助”选项,该选项是由用户输入“?”触发的符号。

但是由于 Switch 接受类型“char”,我不确定这是怎么可能的。

您能给我指出正确的方向吗?

这是迄今为止我的未编译代码:

private char readChoice()
{ System.out.print("Choice (a/b/c/s/?/x): ");
return In.nextLine().toLowerCase().charAt(0); }

private void execute(char choice)
{ switch (choice)
{ case 'a': routes.show(); break;
case 'b': customers.book(routes); break;
case 'c': customers.show(); break;
case 's': routes.showSchedule(); break;
case '\?': showHelp(); break;
case 'x': break; }}

private String showHelp()
{ String helpText = " A/a Show bookings by route\n";
helpText += " B/b Book a trip\n";
helpText += " C/c Show bookings by customer\n";
helpText += " ? Show choices\n";
helpText += " X/x Exit\n";
return helpText; }

还有一个问题,是否有更合适的方法来实现“退出”选项,而不是仅仅在输入“x”后休息一下?

感谢您花时间阅读我的问题。

最佳答案

Java 语言中的问号字符没有什么特别的。你不需要转义它 - 它不像正则表达式。只需使用:

case '?': showHelp(); break;

参见JLS section 3.10.4对于您确实需要转义的字符(以及可用的转义序列)。

编辑:根据评论,问题出在 showHelp() 方法上,该方法构建一个字符串但不返回它。您可能想要类似的东西:

private String showHelp() {
out.println(" A/a Show bookings by route");
out.println(" B/b Book a trip");
out.println(" C/c Show bookings by customer");
out.println(" ? Show choices");
out.println(" X/x Exit");
}

...适合 out 的值。

(顺便说一句,你的支撑样式很奇怪,我觉得它很难阅读。Java 中有两种常见的支撑样式 - 我在上面的代码中展示的一种,以及“单独一行上的支撑”与右大括号的缩进相同”版本。为了其他人可能会阅读您的代码,可能值得采用这些常见样式之一。)

关于java - 如何在类型 'char' 的 Switch 中实现特殊字符(?)作为选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12372217/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com