Java Как я могу отобразить и найти одно и то же значение в текстовом файле, чтобы все записи были отсканированы и отображены, если в записи есть значение - PullRequest
0 голосов
/ 19 сентября 2019

Вот мой квест, у меня одинаковое значение в записях в текстовом файле.Но я могу найти только первый и отобразить первый.Как я могу найти все записи с этим значением и отобразить их.Вот код,

package projectsby;

import java.io.File;
import java.util.Scanner;
import javax.swing.JOptionPane;

    public class Find {
    private static Scanner o;

        public void openFile(){
            try{
                o = new Scanner(new File("/Users/e.h.j.hofman/NetBeansProjects/Projectsby/src/projectsby/Projects.txt"));
            }

    catch(Exception e) {
                System.out.println("Could not find file");   
    }}

        /**
         *
         * @param searchTerm
         * @param filepath
         */
        public void readEntries(String searchTerm, String filepath){

        boolean found = false;
        String Project = "";
        String omschrijving = "";
        String BU= ""; 
        String afdeling = "";

        try
        {
            o = new Scanner(new File(filepath));
            //o.useDelimiter("[ \n]");
            while(o.hasNext()
                    //&& !found )
            {

                Project = o.next();
                omschrijving = o.next();
                BU = o.next();
                afdeling = o.next();

                if(Project.equalsIgnoreCase(searchTerm))
                {
                    found = true; }
            }
           if (found) 
           {

Здесь я подозреваю, что это поможет, когда есть какой-то цикл while.

JOptionPane.showMessageDialog
(null,"Project: " + Project + " " +omschrijving + "\nBU: " 
+ BU + "\nAfdeling: " +afdeling);
           } else {
                       JOptionPane.showMessageDialog(null,"Project not found");
        }}
        catch(Exception e)
      {
            JOptionPane.showMessageDialog(null, "Error");
      }}
    public void closeFile(){
        o.close();
      }}

1 Ответ

0 голосов
/ 19 сентября 2019

Это немного сложно определить по форматированию кода, но блок кода в выражении «if (found)» будет выполняться только в конце файла, поскольку он находится вне цикла while.Возможно, этот код следует переместить в оператор «if (Project.equalsIgnoreCase (searchTerm))».Затем он будет выполняться для каждой записи в файле, если найден searchTerm.

Тогда для "найденного" логического значения нет никаких оснований.

 while (o.hasNext()) {
    ...
    if(Project.equalsIgnoreCase(searchTerm)) {
        JOptionPane.showMessageDialog ...
    }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...