2016-04-28 45 views
0

截至目前,我有一個名爲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); 
+0

如果你在說我認爲你在說什麼,那麼你會反悔。 BNF描述你想要使用的語法。在你有BNF後,你編寫一個程序來解析這種格式的語法。所以你首先需要BNF(它來自你自己),然後你根據BNF讀取'lol.txt'文件。 – markspace

+0

@markspace是的,我有我需要在lol.txt文法格式。我很困惑如何解析我猜的語法 –

+0

@markspace我根據自己的進度調整了相應的問題 –

回答

0

首先,你要的結果從分割存儲在一個新的變量,因爲它會返回一個新的String數組(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之間的隨機數,以找到您的隨機字的索引和打印字。

+0

所以現在,我把它讀成隨機的問候語。所以如果我輸入「4」,它會打印4個隨機問候,但它們都是一樣的。任何想法爲什麼每個問候沒有隨機在我的for循環? –

+0

@JohnDoe我們確實需要一些代碼來回答這個問題。你可以更好地爲此打開一個新問題;) – Rick

相關問題