2013-09-23 2 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. 활 와우 - 신선한 Azimiz. (내 선택이 아니라, 이것은 교과서에서 나온 것입니다.)

내 문제는 모든 입력 번호에서 시작해야한다는 것을 인식하도록 프로그램을 가져올 수 있습니다. 출력은 단지 줄뿐만 아니라 모든 것을 가지고 있습니다.

예 : 입력 :

출력 3 : 3 데이브 매튜스 밴드 (Dave Matthews Band) - 충돌 나로 (\ n)도 4. 쉐릴 크로우가 - 라스 베이거스

에 어떤 아이디어를 떠나하는 방법이 문제를 해결하려면? 감사!

답변

1

당신이 호출하는 one-argument substring method은 원하는 위치가 아닌 문자열의 처음부터 끝까지 걸립니다.

다음 색인\n의 색인을 찾아야합니다. 존재하는 경우 the two-argument substring method을 사용하여 적절한 하위 문자열을 추출합니다. 존재하지 않으면 문자열의 끝까지 하위 문자열을 가져 오기 위해 이미 호출 한대로 substring으로 호출 할 수 있습니다.

+0

그리고 그게 당신이 남자에게 물고기를 가르치는 방법입니다. +1 – afsantos

0

컬렉션을 사용하여 노래를 저장하는 것이 좋습니다 (예 : HashMap). 이렇게하면 하위 문자열에 액세스하는 것에 대해 걱정할 필요없이 키에서 값에 직접 액세스 할 수 있습니다.

여기 (키가 발견되지 않는 경우, 당신은 사용자가 정수를 제외하고 아무것도 입력하는 경우 java.lang.NumberFormatException을 받고, null 객체 것이다 ) 그 일을하는 한 가지 방법이다 :

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