2012-03-06 3 views
0

Моя проблема что я должен написать код, чтобы проверить, есть ли имя пользователя уже в моем txt-файле (Customers.txt).Проверка имени клиента уже в файле txt с FileReader

Как вы можете видеть, я пишу имя своего клиента, каждую четвертую строку в моем txt-файле. Я хотел бы иметь имя имени клиента с SimpleInOutDialog en, тогда входы должны быть сопоставлены с именем клиента в моем txt-файле. Как это сделать?

Код, который у меня уже есть, приведен ниже.

//make SimpleInOutDialog 
    SimpleInOutDialog input = new SimpleInOutDialog("Customers"); 
    namecustomer = input.readString("Give in the name"); 
try{ 
BufferedReader br = new BufferedReader(new FileReader("L:\\Documents/Informatica/6de jaar/GIP/klanten.txt")); 
HashSet<String> hs = new HashSet<String>(); 
int i = 0; 
while ((line = br.readLine()) != null) 
{ 
    i++; 

     if (i % 4 == 0){ 
      if(hs.contains(namecustomer)){ 
      //customer exists 
      input.showString("The customer exists", "");} 
      else 
      {setNewcustomer();}} 


} 
}catch (Exception e){//Catch wanneer er errors zijn 
    System.err.println("Error: " + e.getMessage());} 
return line; 
} 



public void setNewcustomer(){ 
    // make a newSimpleInOutDialog  
    SimpleInOutDialog input = new SimpleInOutDialog("A new customer"); 
    //input 
    S = "Name customer: " + input.readString("Give in your name:"); 
    WriteToFile(); 
    S = "Adress: " + input.readString("Give your adress"); 
    WriteToFile(); 
    S = "Telephonenummber: " + input.readString("Give your telephonenumber"); 
    WriteToFile(); 
    //making a customerID 
     UUID idCustomer = UUID.randomUUID(); 
    S = "CustomerID: " + customerID.toString(); 
    WriteToFile(); 

} 

public void WriteToFile(){ 
try{ 

    FileWriter writer = new FileWriter("L:\\Documents/Informatica/6de jaar/GIP/Customer.txt", true); 
    BufferedWriter out = new BufferedWriter(writer); 
    //Wrting away your data 
    out.write(S); 

    //Closing the writer 
    out.close(); 


}catch (Exception e){//Catch when there are errors 
    System.err.println("Error: " + e.getMessage()); 
    } 
    } 

Изменения должны быть быть в GetCustomer() Спасибо !!

Привет, решить мою проблему, вот решение:

public void getKlant() { 
    // SimpleInOutDialog aanmaken  
     SimpleInOutDialog input = new SimpleInOutDialog("Klanten"); 
     naamklant = input.readString("Geef de volledige naam in"); 
    try{ 
    BufferedReader br = new BufferedReader(new FileReader("L:\\Documents/Informatica/6de jaar/GIP/klanten.txt")); 
    HashSet<String> hs = new HashSet<String>(); 
    int i = 0; 
    while ((line = br.readLine()) != null) 
    { 
     i++; 
     if (i == 1){hs.add(br.readLine());} 

     if (i % 4 == 0){hs.add(br.readLine());} 

    } 
    if(hs.contains(naamklant)){ 
     //klant bestaat 
    input.showString("De klant bestaat", ""); 
    }else{setNieuweKlant();} 


    }catch (Exception e){//Catch wanneer er errors zijn 
     System.err.println("Error: " + e.getMessage());} 

} 
+0

До сих пор, что вы пытались достичь? Кроме того, мне не нравятся люди, которые постоянно просят разработать собственную программу, не используя свой собственный мозг, и, не выполняя то, что они пытались сделать. -> http://stackoverflow.com/questions/9589689/make-filereader-read-every-fourth-line-with-a-loop –

+0

@AlbertoSolano Ну, я думал об этом уже 2 дня, я действительно Не понимаю ничего о том, как работает BufferedReader, но мне нужно решить эту проблему, потому что это основа моей программы. У меня уже есть другой код, позволяющий ему выбирать, какую услугу он хочет, час бронирования и может ли он получить скидку или нет. Я не позволяю вам, ребята, разработать мою программу, я просто прошу о помощи в этой части программы, потому что я не знаю, как заставить ее работать. Спасибо, в любом случае, чтобы проверить мой вопрос. – PauloPawelo

ответ

2

Используйте HashSet хранить все имена, которые Вы читаете, а затем это просто назвать содержит METHODE, чтобы увидеть, если клиент уже существует. Если имена хранятся на четвертой строке, код должен выглядеть так:

HashSet<String> hs = new HashSet<String>(); 
int i = 0; 
while ((line = br.readLine()) != null) 
{ 
    i++; 
     if (i % 4 == 0) 
     { 
      if(hs.contains(line)) 
      //name already exist 
      else 
      hs.add(line); 
      // new customer do what you want with it 

     } 
} 
+0

Вы имеете в виду, как я отредактировал в коде? Потому что я пробовал это так, и он продолжал говорить, что мой клиент не существовал, пока он это делал. – PauloPawelo

+0

Этот код не создает новых клиентов, он просто читает имя и видит, существует ли это имя. Вы должны создать нового пользователя в соответствии с выражением else – nist