2013-09-23 47 views
0

是我到目前爲止的代碼:如何使用的indexOf()來提取線在Java中

import java.util.Scanner; 

public class ExtractLine 
{ 
    public static void main (String[] args) 
    { 
    Scanner stdIn = new Scanner (System.in); 
    String songs = 
    "1. Bow Wow - Fresh Azimiz\n" + 
    "2. Weezer - Beverly Hills\n" + 
    "3. Dave Matthews Band - Crash Into Me\n" + 
    "4. Sheryl Crow - Leaving Las Vegas\n"; 

    String songNum; //song number that is searched for 
    //int songIndex; //position of where song number is found 
    int eolIndex; //position of end of line character 
    String song; //the specified line 

    System.out.print ("Enter song number: "); 
    songNum = stdIn.nextLine(); 
    eolIndex = songs.indexOf("\n"); 


    int songIndex = songs.indexOf(songNum); 


    song = songs.substring(songIndex); 

    System.out.println("\n\n" + song + "\n\n"); 


}//end main 
}//end class 

需要採取什麼措施是,用戶必須輸入一個數字,1-4,則輸出與其上的歌曲一樣,例如。用戶輸入:1,輸出:1. Bow Wow - Fresh Azimiz。 (不是我的選擇,這是一本教科書中的東西)。

我的問題是,我可以讓程序識別出它需要從我輸入的任何數字開始,輸出恰好包含了所有內容,而不僅僅是行。

例如:輸入:3

輸出:戴夫 - 馬修斯樂隊 - 碰撞入我(\ n)的 4.雪兒克羅 - 離開拉斯維加斯

上的任何想法如何解決這一問題?謝謝!

回答

1

你調用one-argument substring method需要從開始位置到字符串的結尾,這不是你想要的。

您將需要找到下一個\n字符的索引。如果存在,則使用the two-argument substring method將提取正確的子字符串。如果它不存在,那麼您可以調用substring,因爲您已經調用它 - 將字符串傳遞到字符串的末尾。

+0

而這就是你教一個人釣魚的方式。 +1 – afsantos

0

您可能要考慮使用集合來存儲歌曲(例如HashMap)。這樣,您可以直接從鍵訪問值,而無需擔心訪問子字符串。

這裏做的一種方式(,您會收到一個java.lang.NumberFormatException如果用戶輸入任何東西,除了一個整數,和一個空的對象,如果關鍵是沒有找到):

public static void main(String[] args) { 
    Scanner stdIn = new Scanner(System.in); 
    Map<Integer, String> songs = new HashMap<>(); 
    songs.put(1, "Bow Wow - Fresh Azimiz"); 
    songs.put(2, "Weezer - Beverly Hills"); 
    songs.put(3, "Dave Matthews Band - Crash Into Me"); 
    songs.put(4, "Sheryl Crow - Leaving Las Vegas"); 

    Integer songNum; 
    System.out.print("Enter song number: "); 
    songNum = Integer.valueOf(stdIn.nextLine()); 

    System.out.println("\n\n" + songs.get(songNum) + "\n\n"); 
    stdIn.close(); 
} 
+0

我現在意識到這個問題與使用indexOf有關,而不僅僅是如何獲得正確的歌曲字符串。我應該刪除這個答案嗎? – Meesh