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

在我程序的这一部分中,我向用户询问命令和文件名。命令可以是“读取”、“内容”或“计数”。在所有不同的任务中,我都需要一个文件。我希望用户在控制台中输入如下内容:


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 个命令组合成一个句子,其中我的代码理解什么与什么相关?


翻阅古今
浏览 147回答 2
2回答

天涯尽头无女友

相反,您在这里可以做的是使用 split 函数来分解您的命令,如下所示:String line = bufferedReader.readLine();String command = line.split(" ")[0];String fileName = line.substring(command.length);这样你的文件名将是字符串的其余部分,而命令只是第一个元素。command应该是命令并且fileName应该是文件名。

慕尼黑5688855

如果您在一个输入中获得整个命令,您可以解析出第一个单词——理解这是“动作”——然后剩下的就是文件名。所以首先你会得到整个命令: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”而没有文件名。)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java