1

私は立ち往生していて、あなたの助けが必要です (はい、それは宿題です)、私がやろうとしているのは、コードにテキスト ファイルの内容を読み取らせ、特定の単語ごとに単語を出力させることです。たとえば、文字「g」で始まるすべての単語を出力したいとします。

うまく説明できなかった場合の疑似コードは次のとおりです。

BEGIN

Get the initial letter from the user

While there are more entries in the file

Get the next personal name

Get the next surname

Get the next year info

If the surname starts with the initial letter

Output the person name, surname and year info

End while

END

これまでのところ、私はこれをやり遂げることができましたが、名前を正しく出力する場所で立ち往生しています。ヘルプやチュートリアルをいただければ幸いです。

import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;

public class PrimeMinisters
{
    public static void main(String[] args) throws FileNotFoundException
    {
        // ask the user for the first letter
        Scanner keyboard = new Scanner(System.in);
        System.out.print("What is the first letter? ");
        String input = keyboard.next().toLowerCase();
        char firstLetter = input.charAt(0);

        // open the data file
        File pmFile = new File ("OZPMS.txt");
        // create a scanner from the file
        Scanner pmInput = new Scanner (pmFile);

        // read one line of data at a time, processing each line
        while(pmInput.hasNext())
        {
            String names = pmInput.next();
            System.out.println(names);
        }

        // be polite and close the file
        pmInput.close();
    }
}
4

2 に答える 2

1

nextLine()以上を使用することをお勧めしnext()ます。これから、ブール値を返すString'sstartsWith(String stringsequence)メソッドを使用して、選択した文字で始まるすべての値を取得します。

  while(pmInput.hasNextLine())
        {

            String names = pmInput.nextLine();
            System.out.println(names);
            if(names.startsWith("g")) {
              //the name begins with letter g do whatever
            }
        }

ここで String のその他のメソッドを見ることができます: http://docs.oracle.com/javase/7/docs/api/java/lang/String.html

于 2012-09-05T18:11:42.540 に答える
0

要件では姓の最初の文字を確認する必要があるため、読みながら各行をトークン化するのが簡単になります (ユーザー入力が姓の最初の文字であるかどうかを確認しながら)。行が上で述べた順序であると仮定すると、姓はトークン #2 (配列のインデックス 1) になります。

public class PrimeMinisters
    {
        public static void main(String[] args) throws FileNotFoundException
        {
            // ask the user for the first letter
            Scanner keyboard = new Scanner(System.in);
            System.out.print("What is the first letter? ");
            String input = keyboard.next().toLowerCase();
            char firstLetter = input.charAt(0);

            // open the data file
            File pmFile = new File ("OZPMS.txt");
            // create a scanner from the file
            Scanner pmInput = new Scanner (pmFile);

            // read one line of data at a time, processing each line
            while(pmInput.hasNextLine())
            {
                String names = pmInput.nextLine();

                // Break line into tokens. This is assuming that there are only
                // 3 strings per line in the following order (personal name, surname, yearinfo)
                //
                String[] info = names.split("\\s"); 

                 // Check 2nd string in line (since you are looking for the first   character in 
                 // the surname and not the personal name.
                 //
                if(info[1].startsWith(input))  
                {
                      System.out.println(info[0] + "\t" + info[1] + "\t" + info[2]);
                }
            }

            // be polite and close the file
            pmInput.close();
        }
    }
于 2012-09-06T08:08:10.230 に答える