为了账号安全,请及时绑定邮箱和手机立即绑定

向用户询问包括文件名混淆的命令

向用户询问包括文件名混淆的命令

翻阅古今 2021-12-22 15:30:15
在我程序的这一部分中,我向用户询问命令和文件名。命令可以是“读取”、“内容”或“计数”。在所有不同的任务中,我都需要一个文件。我希望用户在控制台中输入如下内容:read Alice's Adventures In Wonderland.txt出于某种原因,我不知道如何在 1 个命令中实现这一点。现在,我首先询问文件名,然后询问如何处理它。以下示例是“读取”命令,它要求输入一个文件并计算文件中的所有单词:case "read":            int nrWords=countAllWords();            System.out.println("The number of words in this file is: "+nrWords+"\n");            break;. private static int countAllWords() throws IOException  {    Scanner input=new Scanner(System.in);    System.out.println("Please enter file name: ");    String fileName=input.nextLine();    FileInputStream inputStream=new FileInputStream(fileName);    BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(inputStream));    String line=bufferedReader.readLine();    int nrWords=0;    while(line!=null)    {      String[] wordsInLine=line.split(" ");      nrWords=nrWords+wordsInLine.length;      line=bufferedReader.readLine();    }    return nrWords;  }有人可以解释一下我如何将这 2 个命令组合成一个句子,其中我的代码理解什么与什么相关?
查看完整描述

2 回答

?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

相反,您在这里可以做的是使用 split 函数来分解您的命令,如下所示:


String line = bufferedReader.readLine();

String command = line.split(" ")[0];

String fileName = line.substring(command.length);

这样你的文件名将是字符串的其余部分,而命令只是第一个元素。command应该是命令并且fileName应该是文件名。


查看完整回答
反对 回复 2021-12-22
?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

如果您在一个输入中获得整个命令,您可以解析出第一个单词——理解这是“动作”——然后剩下的就是文件名。


所以首先你会得到整个命令:


Scanner input=new Scanner(System.in);

System.out.println("Please enter command: ");

String command = input.nextLine();

然后你会想要解析出这个动作。它永远是第一个词。


String action = command.substring(0, command.indexOf(' ')).trim();

String fileName = command.substring(command.indexOf(' ')).trim();

现在您可以检查操作是什么并根据需要使用该文件。


String 的indexOf方法将返回指定字符第一次出现的索引。所以在这种情况下,我们使用它来获取第一个空间的索引。请注意,indexOf如果该字符不存在,它将返回 -1,因此您需要为此进行适当的陷阱。(示例场景:用户只输入“read”而没有文件名。)


查看完整回答
反对 回复 2021-12-22
  • 2 回答
  • 0 关注
  • 146 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信