2013-11-21 53 views
0

程序應該接受用戶輸入的語句,例如「我非常餓」,然後請求旋轉一些單詞。如果這個數字是2,那麼新產出將會「非常飢餓」。這是我的代碼,但我似乎有一個錯誤。當我運行代碼時,會出現:java.util.InputMismatchException。還有一些其他信息出現在它下面,但我不確定它的含義。這是我的代碼到目前爲止。在java中的字符串中旋轉字

import java.util.*; 
public class WordRotation 
{ 
    public static void main(String[] args) 
    { 
    Scanner input = new Scanner(System.in); 
    System.out.println("Enter a sentence"); 

    if(input.hasNext()); 
    { 
     String s = input.next(); 

     String[] words = s.split(" "); 

     System.out.println("Enter number of words to be rotated"); 
     int rotation = input.nextInt(); 

     for (int i = 0;i < words.length;i++) 
     { 
     System.out.print(words[(i + words.length - rotation)%words.length] + " "); 
     } 
    } 
    } 
} 

我試圖改變我的if語句while語句,但代碼從不輸出任何東西,它只是繼續加載。

+0

你可以檢查代碼,而不'if'聲明? –

+0

_「還有一些其他信息出現在它下面,但我不確定它的含義。」_ - 這是異常的堆棧跟蹤。通常最好是逐字地發佈整個堆棧跟蹤,而不僅僅是例外名稱。哪一行拋出異常? –

+2

你在'if'之後有一個';'是故意的嗎? –

回答

2

變化String s = input.next();String s = input.nextLine();


是的,這實際上是一個解決方案,因爲當我們按下回車鍵,還有一個\n在流還是離開後我們打Enter.nextInt()讀取\n你的電話號碼。如果我們使用input.nextLine()而不是input.next(),我們將捕獲\ninput.nextInt()將讀取下一個整數,而不是\n

有更多信息https://stackoverflow.com/a/7056782/1366360

+0

這不會改變任何東西。 –

+0

@tintinmj你確定嗎? http://i.imgur.com/Mu3LwhR.png – mdolbin

+1

@tintinmj - 這實際上是解決方案,因爲'input.next()'讀取下一個_token_,而不是整個句子(或行)。這會將輸入留在第二個單詞(假定爲空白的默認分隔符),然後在調用input.nextInt()時導致「InputMismatchException」。 –

0

你需要你的

System.out.println("Enter number of words to be rotated"); 

後,從輸入再讀加入這一行

Scanner input2 = new Scanner(System.in); 
    int rotation = input2.nextInt(); 
+0

爲什麼不能像OP那樣使用'input'?問題在於OP沒有閱讀整個第一行,只是該句子的第一個單詞。 –

+0

是的,你是對的 – constantlearner