0

私は現在、CSVを解析し、入力された電子メールアドレスをCSVと照合し、それが有効である場合は人事情報を表示するプログラムに取り組んでいます。私が遭遇している問題は、あなたの電子メールが無効であると言うelseステートメントです。私の現在のコード;

import java.io.*;
import java.util.*;

public class CSVReader123{

public static void main(String[] arg) throws Exception {

    BufferedReader CSVFile = new BufferedReader(new FileReader("testa453.csv"));
    String dataRow = CSVFile.readLine();
    //String email = "ojones@coldmail.net";
    //String password = "ocrabc";

    Scanner input = new Scanner(System.in);
    System.out.println("Please input an email adress");
    String email = input.nextLine();
    System.out.println("Please input you password");
    String password = input.nextLine();

    while (dataRow != null){

        String[] dataArray = dataRow.split(",");
        if ((dataArray[0].equals(email)) && (dataArray[1].equals(password))) {
            System.out.println("Your email is valid");
            System.out.println("Do you want to display you personel data?(Y or N)");
            String personeldata = input.nextLine();
            if ((personeldata.equals("yes")) || (personeldata.equals("Yes")) || (personeldata.equals("Y"))){
                System.out.println("You email is " +dataArray[0]+".");
                System.out.println("You password is " +dataArray[1]+".");
                System.out.println("You first name is " +dataArray[2]+".");
                System.out.println("You second name is " +dataArray[3]+".");
                System.out.println("You street name is " +dataArray[4]+".");
                System.out.println("You city name is " +dataArray[5]+".");
                System.out.println("You postcode is " +dataArray[6]+".");

            }
            else if ((personeldata.equals("no")) || (personeldata.equals("No")) || (personeldata.equals("N"))) {
                System.out.println("Shutting down.");
                break;
            }

        }
        else {
            System.out.println("BROKEN");
            break;
        }
        System.out.println();
        dataRow = CSVFile.readLine();
    }
    CSVFile.close();
    System.out.println();
}
}

私が抱えている問題は、有効または無効な電子メールを入力しようとすると、常に壊れて印刷されて停止することです。ただし、上記のifステートメントを削除すると、プログラムは完全に実行され、残りの部分は正しく機能します。最初のelseステートメントが完全に機能するので、どういうわけか間違った場所でそれを宣言しましたか?どんな助けでもいただければ幸いです。

4

1 に答える 1

1

あなたはbreakループから出るべきではありません。continue電子メールチェックに合格する他の行が存在する可能性があるため、を使用する必要があります。つまり、最初の行がチェックに合格しないため、2番目の行がチェックに合格しないという意味ではありません。すべての行をチェックする必要があります。

このようにします:

else {
     System.out.println("BROKEN");
     dataRow = CSVFile.readLine();
     continue;
}

または、次のようにelseセクション全体を削除します。

}

//here was the else section

System.out.println();
dataRow = CSVFile.readLine();
于 2012-11-17T13:06:57.780 に答える