-1

フォーマットの惨事について申し訳ありません。私はstackoverflowとJavaが初めてです。名前と対応するカタログ番号の 2 つのリストを含むはずのコード内に 2 つの問題があります。コード内では、検索、表示、編集、および終了できるはずです。表示と終了は既に機能していますが、検索と編集に問題があります。問題のある情報をハイライトしました。助けていただければ幸いです。

public static void Search(String[] arr, String find) {

    for (int i = 0; i < 10; i++) {

//創刊!!これは、コードのビットを文字列配列内で検索する、後で呼び出すメソッドです。配列内で特定の文字を検索できるようにする必要があります (配列は名前なので、「mith」は「smith」になります。コードの後半で、これをスイッチ内で呼び出します。「 arr[i].equals(find)」ですが、構文がわかりません

   }
}

public static void main(String[] args) {

    Scanner inp = new Scanner(System.in);
    String userInput1 = "";
    String userInput2 = "";
    String userInput3 = "";

    // Ask User to chose between faculty and students
    System.out.println("Are you searching for Students or Faculty? ");
    userInput1 = inp.nextLine().toLowerCase();


    if (userInput1.startsWith("f")) {

        //Block 1 for faculty
        do {

            String[] Faculty = {"0. Jack Kerouac", "1. Les Claypool", "2. Tom Waits", "3. Kurt Vonnegut",
                "4. Hunter Thompson", "5. Princess Bubblegum", "6. John Smith", "7. Jack Thompson", "8. Jeff Dahmer", "9. Martin King"};


            System.out.println("What would you like to do?");
            System.out.println("S: Search");
            System.out.println("E: Edit");
            System.out.println("D: Display");
            System.out.println("Q: Quit");

            // user input
            userInput2 = inp.nextLine().toLowerCase();
            System.out.println("");

            // Respond based on user input
            switch (userInput2.charAt(0)) {
                case 's':
                    System.out.println("Type part of the persons name: ");
                    String x = inp.nextLine().toLowerCase();
                    String[] y = Faculty;
                    Search(y, x);
                break;
                case 'e':

//これは私の編集配列の問題です。これを機能させるためにいくつかの異なる方法を試みましたが、それぞれで学部[q]を再割り当てするときに問題に遭遇しました。プログラムを実行すると、「新しいカタログ情報の入力」からスキ​​ップしてメイン ループに戻ります。配列内の文字列を変更するにはどうすればよいですか?

                    System.out.println("Enter the catalog number of the entry trying to edit: ");
                    int q = inp.nextInt();
                    System.out.println(Faculty[q]);
                    System.out.println("Enter new catalog information: ");                       
                    String NewFac = inp.nextLine();
                    Faculty[q] = String NewFac;
                    System.out.println(Faculty[q]);

                    break;
                case 'd':
                    System.out.println("Enter a catalog number between 0-9: ");
                    int o = inp.nextInt();
                    System.out.println(Faculty[o]);
                    break;

            }

            // Blank line, for formatting
            System.out.println("");

        } while (!userInput2.equals("q"));
        System.out.println("Done.");


    } else {
        //block 2 for students
        do {

            String[] Student = {"0. Alice Johnson", "1. Johnny Marr", "2. Johnny Johnson", "3. Robert Smith",
                "4. Ian Curtis", "5. Luke Shapiro", "6. David Newman", "7. Ren Newman", "8. Camille Kaslan", "9. Alexander Shulgin"};

            System.out.println("What would you like to do?");
            System.out.println("S: Search");
            System.out.println("E: Edit");
            System.out.println("D: Display");
            System.out.println("Q: Quit");

            // user input
            userInput3 = inp.nextLine().toLowerCase();
            System.out.println("");

            // Respond based on user input
            switch (userInput3.charAt(0)) {
                case 's':
                    System.out.println("Type part of the persons name: ");
                    String x = inp.nextLine().toLowerCase();
                    String[] y = Student;
                    Search(y, x);
                break;
                case 'e':
                    System.out.println("Enter the catalog number of the entry trying to edit: ");
                    int r = inp.nextInt();
                    System.out.println(Student[r]);
                    System.out.println("Enter new catalog information: ");
                    Student[r] = inp.nextLine();
                    System.out.println(Student[r]);
                    break;
                case 'd':
                    System.out.println("Enter a catalog number between 0-9: ");
                    int n = inp.nextInt();
                    System.out.println(Student[n]);
                    break;

            }

            // Blank line, for formatting
            System.out.println("");

        } while (!userInput3.equals("q"));
        System.out.println("Done.");



    }

不明な場合は、最初の問題は、「検索」と呼ばれる検索メソッド内の for ループに何を入れるかです。2 番目の質問は、ユーザーから新しい情報を取得し、それを名前の配列に置き換える方法です (編集機能)。

4

2 に答える 2

0

最初の質問は、おそらくこのようなものですか?

public static void Search(String[] arr, String find) {
    for (int i = 0; i < 10; i++) {
        if (arr[i].toLowerCase().contains(find.toLowerCase())) {
             System.out.println(String.format("found name: %s", arr[i]));
             return;
        }
    }
    System.out.println("Name not found!");
}

2 番目の質問は、SO で常に発生する一般的な問題です。改行文字を食べるには、nextInt の後に nextLine を付ける必要があります。

System.out.println("Enter the catalog number of the entry trying to edit: ");
int q = inp.nextInt();
inp.nextLine();
System.out.println(Faculty[q]);
于 2012-10-25T21:54:59.000 に答える
0

私があなたが必要とするものをよく理解していれば:

"string1".equalsIgnoreCase("string2");

これは、大文字か小文字かを無視して 2 つの文字列を比較します。ここで行う必要があるのは、配列をループして、各インデックスを比較する文字列と比較することです。

于 2012-10-25T21:47:03.490 に答える