gpt4 book ai didi

Java - 提示用户输入命令,如果无法识别则抛出错误

转载 作者:太空宇宙 更新时间:2023-11-04 12:07:48 25 4
gpt4 key购买 nike

我正在尝试编写一段代码来提示用户输入一些指令。如果用户输入命令“echo”+单词,它将在下一行显示单词本身。然后会再次出现提示,等待再次输入。

如果输入的命令未知,程序应显示错误。我在这里遇到问题,因为程序没有显示错误消息。

此外,如果用户没有输入任何内容,只是按 Enter 键,它应该只是在下一行再次显示提示,但它并没有这样做。

希望你能帮助我..

import java.util.Scanner;
import java.io.*;

public class Prompter {

public static void main(String[] args) {

Scanner sc = new Scanner (System.in);

String sInstruct, sTerm;


System.out.print("Enter:> ");
sInstruct = sc.next();
sTerm = sc.nextLine();

try {
if (sInstruct.equals("")){
while(sInstruct.equals(""))
{
System.out.print("Enter:> ");
sInstruct = sc.next();
}

} else if (sInstruct.equals("echo")){
while (sInstruct.equals("echo"))
{
sayWord(sInstruct, sTerm);
System.out.print("Enter:> ");

sInstruct = sc.next();
sTerm = sc.nextLine();
}

}
}
catch(Exception error){
System.out.print("Invalid command " + sInstruct);
}

sc.close();
}
public static void sayWord (String sInstruct, String sTerm){

System.out.println(sTerm);
}
}

输出应该是:

Enter:> echo hello brown fox
hello brown fox
Enter:>
Enter:>
Enter:> eccoh hello
Invalid command eccoh
Enter:>

最佳答案

我在您的代码中发现一些问题:

  • 同时使用 sInstructsTerm 太过分了,您应该仅使用 sTerm,因为它将包含完整的指令
  • while 循环必须位于 if 条件之外,并且应检查 sc.hasNextLine()
  • 要检查输入的字符串是否为空,您应该使用 sTerm.isEmpty()
  • 要检查输入的字符串是否以 echo 开头,您应该使用 sTerm.startsWith("echo")
  • 必须在 while 循环内设置无效指令的检查。
  • 不需要 try-catch 子句。

查看建议的解决方案:

import java.util.Scanner;
import java.io.*;

public class Prompter {

public static void main(String[] args) {

Scanner sc = new Scanner (System.in);
String sTerm;

System.out.print("Enter:> ");

while(sc.hasNextLine()) {
sTerm = sc.nextLine();
if(sTerm.isEmpty()) {
} else if (sTerm.startsWith("echo")) {
sayWord(sTerm.substring(5));
} else {
System.out.println("Invalid command " + sTerm.split(" ")[0]);
}
System.out.print("Enter:> ");
}

sc.close();
}

public static void sayWord (String sTerm){

System.out.println(sTerm);
}
}

或者,如果您愿意,if-else 子句可以更加紧凑:

if (sTerm.startsWith("echo")) {
sayWord(sTerm.substring(5));
} else if(!sTerm.isEmpty()) {
System.out.println("Invalid command " + sTerm.split(" ")[0]);
}

关于Java - 提示用户输入命令,如果无法识别则抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40190892/

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