簡體   English   中英

while循環中的else語句損壞

[英]Broken else statement within a while loop

我目前正在開發一個程序,用於解析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語句運行良好以來,我是否以某種方式在錯誤的位置聲明了它? 任何幫助,將不勝感激。

您不應該break循環。 您必須使用continue ,因為可能會有其他行通過電子郵件檢查。 我的意思是,因為第一行沒有通過檢查,所以這並不意味着第二行不會通過檢查。 您必須檢查所有行。

使它像這樣:

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

或者只是像這樣刪除整個其他部分:

}

//here was the else section

System.out.println();
dataRow = CSVFile.readLine();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM