gpt4 book ai didi

java - 如何组合Switch语句?

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

我是 Java 新手,正在处理学校作业。目标是创建一个 Java 类来模拟 unix 中的 Echo 工具。如果我输入:

java Echo 'i love you'

它将打印:

i love you

然后有两个命令行选项
-n:省略尾随换行符
-e:启用反斜杠转义的解释。
我还需要能够同时使用 -n 和 -e。

到目前为止,我弄清楚了如何分别实现 -n-e 。这是代码:

public class Echo {

public static void main(String []args) {

switch (args[0]) {
case "-n":
for (int i=1; i<args.length;i++)
System.out.print(args[i]);
break;

case "-e":
for (int i=1; i<args.length; i++) {
args[i]=args[i].replace("\\t", "\t");
args[i]=args[i].replace("\\n","\n");
System.out.println(args[i]);
}
break;
default:
for (int i=0; i<args.length; i++)
System.out.println(args[i]);
}
}
}

我尝试更改代码,以便能够输入:

java Echo -n -e 'ilove\tyou'

java Echo -e -n 'ilove\tyou'

而且它根本不起作用。这是我的尝试:

public class Echo {

public static void main(String []args) {

if ((args[0].equals("-n") || args[0].equals("-e")) && (args[1].equals("-e") ||args[1].equals("-n"))) {
for (int i=2; i<args.length; i++) {
args[i]=args[i].replace("\\t", "\t");
args[i]=args[i].replace("\\n","\n");
System.out.print(args[i]);
}
} else {
switch (args[0]) {
case "-n":
for (int i=1; i<args.length;i++)
System.out.print(args[i]);
break;
case "-e":
for (int i=1; i<args.length; i++) {
args[i]=args[i].replace("\\t", "\t");
args[i]=args[i].replace("\\n","\n");
System.out.println(args[i]);
}
break;
default:
for (int i=0; i<args.length; i++)
System.out.println(args[i]);
}
}
}
}

最佳答案

您需要注意标志位于 args[] 中的位置以及字符串的位置。由于 args[] 的长度可以为 1(无标志),因此您不能随意访问 args[1]

正如 the comment by RC 中所述,首先找到标志然后再应用它们的效果要容易得多。我假设标志必须位于字符串之前,因此保证字符串位于最后一个单元格中。从那里,向后寻找标志。

public class Example {

public static void main(String[] args) {

boolean hasE = false;
boolean hasN = false;
String message = args[args.length - 1];

for (int i = args.length - 2; i >= 0; i--) {
switch (args[i]) {
case "-n": hasN = true; break;
case "-e": hasE = true; break;
}
}

if (hasE)
message = message.replace("\\n", "\n").replace("\\t", "\t");
if (hasN)
System.out.print(message);
else
System.out.println(message);
System.out.println("Test");
}
}

注释:

  • 我没有进行输入验证(您没有在作业或代码中提及它,我不想完成整个作业)。提示:检查 args.length 是否为 0 或大于 3。
  • 我假设您只需要转义制表符和换行符。如果您需要转义更多内容,则需要更复杂的正则表达式。
  • 我在末尾添加了一个打印,以便轻松检查 -n 的效果。

关于java - 如何组合Switch语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35542487/

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