我正在尝试编写一个代码,提示用户输入一些说明。如果用户输入命令" echo" + word,它将在下一行显示单词本身。然后再次出现提示,等待另一个输入。
如果输入的命令未知,程序应显示错误。我在这里遇到问题,因为程序没有显示错误消息。
此外,如果用户没有输入任何内容并只按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:>
答案 0 :(得分:0)
我在您的代码中看到了一些问题:
sInstruct
和sTerm
是一种矫枉过正,您应该只使用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]);
}