0

私がこれまでに持っているコード:

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

出力: 3. Dave Matthews Band - Crash Into Me (\n) 4. Sheryl Crow - Leaving Las Vegas

これを修正する方法についてのアイデアはありますか?ありがとう!

4

2 に答える 2

1

呼び出す引数が 1 つのsubstringメソッド、文字列の最初の位置から最後まで取得しますが、これは必要なものではありません。

次の \n文字のインデックスを見つける必要があります。存在する場合は、適切な部分文字列を抽出する2 つの引数substringメソッドを使用します。存在しない場合は、substring既に呼び出しているように呼び出して、部分文字列を文字列の最後まで取得できます。

于 2013-09-23T20:54:23.513 に答える
0

コレクションを使用して曲を保存することを検討することをお勧めします (HashMap など)。そうすれば、部分文字列へのアクセスを心配することなく、キーから直接値にアクセスできます。

これを行う 1 つの方法を次に示します (ユーザーが整数以外を入力した場合は を受け取り、キーが見つからない場合は null オブジェクトを受け取ることに注意してください)。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();
}
于 2013-09-23T21:19:40.273 に答える