2016-03-16 3 views
-1

предположить, что мой текстовый файл состоит в следующем:прочитать файл и определить строку

NOT VOTED/1/gello/18 
NOT VOTED/2/tara/24 

механизмы, как status if user already voted or not/voter's number/name/age я разделил информационную строку в массив так как этот

info[0]=status/info[1]=voters number/info[2]=name/info[3]=age

вот функция моей программы:

  1. посмотреть файл
  2. позволяет пользователю ввести избиратель номер
  3. если число избирателей соответствует информации [1], перейдите к шагу 3
  4. в то время как информация [0] содержит «ПРОГОЛОСОВАЛИ» он получит сообщение об ошибке, что количество этого избирателя уже проголосовало и введите номер другого избирателя. если ложно оно приступит к процессу голосования
  5. Сейчас информация [0] будет изменен, чтобы «ПРОГОЛОСОВАЛ»

вот мой код:

 File original = new File("C:\\voters.txt");//open the original file  
     File temporary = new File("C:\\tempvoters.txt");//create temporary file 

     BufferedReader infile = new BufferedReader(new FileReader(original));//read the file 
     PrintWriter outfile = new PrintWriter(new PrintWriter(temporary));//write the data 

     vNum=JOptionPane.showInputDialog("Enter voters number: "); 
     String line=null; 
     String something="VOTED"; 
     while((line=infile.readLine())!=null){ 

      String [] info=line.split("/"); 
      if(info[1].matches(vNum)){ 

       while(info[0].matches(something)) { 
        JOptionPane.showMessageDialog(null, "Voter already voted or Voter not registered. Please try again"); 
        vNum=JOptionPane.showInputDialog("Enter voters number: "); 
       } 

       President(); 
       Vice_President(); 
       info[0]="VOTED"; 
       all=info[0]+"/"+info[1]+"/"+info[2]+"/"+info[3]+"/"+info[4]+"/"+info[5]+"/"+info[6]+"/"+info[7]+"/"+info[8]+"/"+info[9]+"/"+info[10]+"/"+info[11]+"/"+info[12]; 
       outfile.println(all); 
       outfile.flush(); 
      } 
      else{ 
       outfile.println(line); 
       outfile.flush(); 
      } 


     } 

     infile.close(); 
     outfile.close(); 

     original.delete();//delete the original file 
     temporary.renameTo(original);//rename the temporary file to original file 

теперь это происходит в коде, который я изготовленный под заказ:

предположим ввод 1 как избиратели номер. и поскольку информация [0] все еще содержит «NOT VOTED», она перейдет к процедуре голосования, и после этого элемент info [0] теперь содержит «ГОЛОСОВАТЬ». теперь после этого процесса он вернется в главное меню. теперь, когда я снова вернусь к другому номеру избирателей, я снова попробовал ввести 1, чтобы узнать, появится ли сообщение об ошибке. он сделал. поэтому я снова ввел номер другого избирателя, который равен 2, и его информация [0] по-прежнему содержит «NOT VOTED», но сообщение об ошибке все равно появится! я действительно застрял в этом процессе, и я не знаю, что с этим делать, потому что я действительно не знаю, что не так. думать, что функции в этом методе моей программы одинаковы с другими методами, которые у меня были. пожалуйста, пожалуйста, пожалуйста, помогите

ответ

0

время (информация [0] .matches (то))

Он смотрит на меня, как будто вы не вырваться из этого цикла While, так как информация [0] всегда будет истинным, так как переменная «что-то» не изменяется. То, что я хотел бы предложить следующее:

{
JOptionPane.showMessageDialog (нулевой, «избиратель уже проголосовал или избиратель не зарегистрирован Пожалуйста, попробуйте еще раз.»);
vNum = JOptionPane.showInputDialog ("Введите число избирателей:");
something = "NOT VOTED"; // Это будет разорвать петлю
}

+0

я попытался изменить его в информации [0] .matches («ПРОГОЛОСОВАЛ»), но это все та же:/вы можете предложить о том, как я должен это делать? – bruh

+0

Отредактировано мое сообщение, чтобы включить предложение. –

+0

О, это уже работает !!!!!!! но по-прежнему существует проблема, как после процесса голосования сообщение об ошибке снова появится и заставляет меня вводить номер избирателя снова – bruh

Смежные вопросы