1

比較的単純なファイルの読み取りを行っていますが、入力値と、フラット ファイルから読み取られて配列に格納されたデータ値との間の検証で異常が発生しました。エラーをfirstNameフィールドまで追跡しました。このフィールドを に等しいと定義していarray[0]ます。While array[0]出力に完全に表示されますが、そうでfieldNameはありません...空白またはnullです。

出力サンプルを含む私のコードは次のとおりです。

Stringbuilderここで が最も適切に使用されているかどうかわかりません。または深い文字列メソッドの1つですか? 私が試したことはどれもうまくいかないようです。私は何を見逃しているのですか...それは私が見ることができない明らかなものであることを私は知っています.

public class DisplaySelectedNumbers
{
    public static void main(String[] args)
    {
        final String FN = "            ";
        final String LN = "            ";
        final String PHONE = "0000000000";
        String delimiter = ",";
        String s = FN + delimiter + LN + delimiter + PHONE + System.getProperty("line.separator");
        final int RECSIZE = s.length();
        String[] array = new String[3];
        Scanner kb = new Scanner(System.in);
        Path file = Paths.get("PhoneList.txt");
        String fName = JOptionPane.showInputDialog(null,"Enter first name to search");
        try
        {
            InputStream iStream=new BufferedInputStream(Files.newInputStream(file));
            BufferedReader reader=new BufferedReader(new InputStreamReader(iStream));
            while ((s = reader.readLine()) != null)
            {
                array = s.split(delimiter);
                String dispString = array[0]+" "+array[1]+" "+array[2]+"\n";
                System.out.println("array[0]="+array[0]);
                System.out.println("array[1]="+array[1]);
                System.out.println("array[2]="+array[2]);
                String firstName = array[0];
                System.out.println("firstName=");
                    s=reader.readLine();
            }
        }
        catch(Exception e)
        {
            System.out.println("Message: " + e);
        }
    }
}


array[0]=D
array[1]=JJ
array[2]=0123450000
firstName=
array[0]=B
array[1]=EE
array[2]=1111111111
firstName=
array[0]=D
array[1]=GG
array[2]=0033333333
firstName=
4

2 に答える 2

5

firstName実際に変数を出力するのを忘れました:

System.out.println("firstName="); 

代わりに次のものが必要です。

System.out.println("firstName=" + firstName); 
于 2012-04-30T17:54:15.640 に答える
1

質問に対する完全な答えではありませんが、特にループ内で文字列の連結速度を向上させる必要がある場合は、コードでStringBuilderを使用する方が適切です。

StringBuilderと文字列の連結

于 2012-04-30T18:06:46.030 に答える