2013-10-08 64 views
-4

我正在編寫一個程序,該程序可以解析從命令行重定向的文本文件中的祕密消息。第一行是關鍵短語,第二行是一組索引關鍵短語的整數。我正在嘗試使用charAt()方法,但我一直沒有收到這樣的元素異常錯誤消息。charAt()問題

public class Decoder 
{ 
    public static void main(String[] args) 
    { 
     Scanner keyboard = new Scanner(System.in); 

     while (keyboard.hasNext()) 
     { 
      String phrase = keyboard.nextLine(); 
      int numbers = keyboard.nextInt(); 
      char results = phrase.charAt(numbers); 
       System.out.print(results); 
     }  
    } 
} 
+0

什麼是測試用例失敗? –

回答

1

注意,當你做int numbers = keyboard.nextInt();,它僅讀取int值(和跳過\n這是回車鍵後,你向右按壓) - 參見Scanner#nextInt

因此,當您繼續閱讀keyboard.nextLine()時,您會收到\n

您可以添加另一個keyboard.nextLine()以讀取從nextInt()跳過的\n

你得到的例外是因爲你試圖在\n上使用charAt

+1

這樣做了......謝謝。 –

0

請記住charAt爲零索引。

例如如果您輸入「測試」,然後輸入「3」,則輸出應爲「t」。

+0

第1行=五個精靈嚮導快速跳轉 第2行= 21 5 6 11 15 9 10 3 34 22 28 5 15 2 3 4 21 5 3 18 27 5 20 9 6 23 19 20 7 這裏是文本文件它正在被讀取。我想獲取每個int並使用charAt引用第一行並輸出該字符形成消息的內容。 –

+0

異常在線程 「主」 java.util.NoSuchElementException \t在java.util.Scanner.throwFor(Scanner.java:907) \t在java.util.Scanner.next(Scanner.java:1530)在java的 \t .util.Scanner.nextInt(Scanner.java:2160) \t在java.util.Scanner.nextInt(Scanner.java:2119) \t在Decoder.main(Decoder.java:22) 這些都是消息我繼續得到。 –