2012-11-17 206 views
0

我目前正在開發一個解析CSV的程序,然後根據CSV檢查輸入的電子郵件地址,如果有效,則顯示其人員信息。我遇到的問題是else語句,表示您的電子郵件無效。我現在的代碼;在while循環中破壞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 = "[email protected]"; 
    //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語句完美嗎?任何幫助,將不勝感激。

回答

1

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

讓這樣的:

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

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

} 

//here was the else section 

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

這不起作用,它只是打破它比它以前更糟。如果您使用它們而不是掃描儀輸入,那麼當前正在評論的兩個字符串,您將看到我的意思是它只是連續打印BROKEN太屏幕。 – Cooke1007

+0

看到我的編輯 - 在繼續之前,您必須閱讀下一行。 –

+0

此外,您不需要爲每一行打印此「BROKEN」。你可以刪除它。您也可以刪除整個其他部分(其中包含「BROKEN」)。 –