2013-03-20 38 views
0

所以,問題是要顛倒用戶輸入的句子中的單詞順序。我遇到過很多用硬編碼的例子,我可以將這些問題都解決。但是,當我嘗試調整掃描儀輸入的代碼時,我甚至無法獲得矢量來打印輸入,更不用說將其反轉。沒有任何反應.. 這是代碼。如果有人能幫助我,那太棒了!Java - Reverse Word Order,Vector

public static void main(String[] args) { 
     Scanner s = null; 
     Vector v = new Vector(); 
     String words; 

     System.out.println("Enter a sentence: "); 
     try { 
      s = new Scanner(System.in); 
      while (s.hasNext()) { 
       words = s.next(); 
       v.add(words); 
      } 
     } 
     finally { 
       if (s != null) { 
        s.close(); // Close scanner when no more input is available 
       } 
     } 
     System.out.println(v); 
    } 

PS:我什至不能讓載體顯示它的輸入,更不用說反向它..所以我仍然卡在那裏。 而且。它必須是矢量,因爲這是任務需要的!

+3

是否有你使用'Vector'而不是'ArrayList'的原因? – NPE 2013-03-20 16:13:10

+1

爲什麼不發佈該代碼,我們可以幫助你呢?我真的懷疑這個代碼中是否存在反轉邏輯。 – SudoRahul 2013-03-20 16:13:53

+0

我甚至無法展示矢量,所以我還沒有得到它的反向呢!它必須是Vector作爲分配標準。 – 2013-03-20 16:14:41

回答

3

這是您的代碼,稍作修改。它使用v.add(0,words)將最後一個字讀入第一個位置。我也將Vector更改爲Vector<String>。使用Ctrl + D在unix中退出。

public static void main(String[] args) { 
     Scanner s = null; 
     Vector<String> v = new Vector<String>(); 
     String words; 

     System.out.println("Enter a sentence: "); 
     try { 
      s = new Scanner(System.in); 
      while (s.hasNext()) { 
       words = s.next(); 
       v.add(0, words); 
      } 
     } 
     finally { 
       if (s != null) { 
        s.close(); // Close scanner when no more input is available 
       } 
     } 
     System.out.println(v); 
    } 

例子:

Enter a sentence: 
aa bb cc 
[cc, bb, aa] 

(按Ctrl + d終止。)

+0

工作得很漂亮!謝謝。驚人的如何添加一個0可以使差異哈哈。 – 2013-03-20 16:21:43

3

我測試你的代碼,它工作正常(顯然,它不會扭轉向量) 。

問題是,當你輸完句子時你需要告訴它。

在Unix上,這是通過按下Ctrl + D在輸入結束時完成的。在Windows上,按Ctrl + Z後面跟着輸入

如果你不這樣做,代碼只是坐在那裏無限期地等待更多的輸入。

+0

謝謝!我現在看到了。有沒有辦法讓一旦輸入被按下就終止它? – 2013-03-20 16:23:34

+0

@AC:您可以調用's.nextLine()'一次,然後對結果使用'String.split()'。 – NPE 2013-03-20 16:24:45