【问题标题】:Take line from text file, convert it to an array, split it and then randomly select a word从文本文件中取行,将其转换为数组,将其拆分,然后随机选择一个单词
【发布时间】:2016-04-28 04:09:15
【问题描述】:

截至目前,我有一个名为 lol.txt 的文本文件,我的代码在文件中打印出带有“|”的一行每个单词之间。例如,第一行打印“hello|howdy|hola”,我想在管道上拆分它,以便我可以从该行随机选择一个问候语。我对为什么我的分隔符不起作用以及如何将其转换为数组感到困惑,这样我就可以获取第一行的索引,所以 greeting[0] 会打印“hello”。

    Scanner sc = new Scanner(System.in);

    // open file and prompt for file name
    System.out.print("Enter a file name: ");
    String fileName = sc.nextLine();
    File infile = new File(fileName);
    Scanner readIt = new Scanner(infile);

    //prints <greeting> of text file. Ex. hello|howdy|etc...
    String greeting = readIt.nextLine();
    greeting.split("|");
    System.out.println(greeting);

【问题讨论】:

  • 如果你在说我认为你在说的话,那你就倒退了。 BNF 描述了您要使用的语法。获得 BNF 后,您编写一个程序来解析该格式的语法。因此,您首先需要 BNF(来自您个人),然后根据该 BNF 读取 lol.txt 文件。
  • @markspace 是的,我在 lol.txt 中有我需要的语法格式。我对如何解析我猜的语法感到困惑
  • @markspace 我根据自己的进度调整了问题
  • greeting.split("|") 不会改变greeting,但会返回一个包含拆分结果的新数组。因此,您应该分配结果(例如String[] greetingSplit = greeting.split("|");)并将该变量用于您的随机选择器。

标签: java arrays split text-files delimiter


【解决方案1】:

首先,您应该将拆分的结果存储在一个新变量中,因为它将返回一个新的字符串数组 (String[])。其次,您需要转义管道分隔符(Splitting a Java String by the pipe symbol using split("|"))。

生成的代码将是:

Scanner sc = new Scanner(System.in);

// open file and prompt for file name
System.out.print("Enter a file name: ");
String fileName = sc.nextLine();
File infile = new File(fileName);
Scanner readIt = new Scanner(infile);

String greeting = readIt.nextLine();
System.out.println(greeting); //prints hello|howdy|etc...
String[] greetingSplit = greeting.split("\\|");
System.out.println(greetingSplit[0]); //prints hello

然后您可以选择一个介于 0 和 greetingSplit.length 之间的随机数来查找随机单词的索引并打印该单词。

【讨论】:

  • 所以现在,我让它读取随机单词以放入随机问候语中。因此,如果我输入“4”,它将打印 4 个随机问候语,但它们都是相同的。知道为什么我的 for 循环中每个问候语都没有随机化吗?
  • @JohnDoe 我们真的需要一些代码来回答这个问题。你可以更好地为此提出一个新问题;)
猜你喜欢
  • 2018-03-30
  • 1970-01-01
  • 2020-12-13
  • 1970-01-01
  • 2013-05-31
  • 2012-08-15
  • 2015-01-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多