Java method with Listiterator to return all elements in a list

Dim :

I am pretty new to this , so there it goes.

I have a Training record GUI that keeps track of athletes performances. I am struggling to write the method findAllEntries. It is supposed to go through the list and return all elements that match certain date, month and year as a String( Similar to lookupEntry, but I need all elements displayed in one string??)

For example when I run the code it should show Bob and Alice entries, but it only shows Bobs.

No matter what I do it gives me only one element.

All help will be appreciated!

// An implementation of a Training Record as an ArrayList

import java.util.*;

public class TrainingRecord {
    private List<Entry> tr;

    public TrainingRecord() {
        tr = new ArrayList<Entry>();
    } // constructor

    // add a record to the list
    public void addEntry(Entry e) {
        tr.add(e);
    } // addClass

    // look up the entry of a given day and month
    public String lookupEntry(int d, int m, int y) {
        ListIterator<Entry> iter = tr.listIterator();
        String result = "No entries found";
        while (iter.hasNext()) {
            Entry current = iter.next();
            if (current.getDay() == d && current.getMonth() == m && current.getYear() == y)
                result = current.getEntry();
        }
        return result;
    } // lookupEntry

    public String findAllEntries(int d, int m, int y) {

        // I am stuck here
        String result = "No entries found";
        return result;
    } // findAllEntries
}
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import java.lang.Number;

public class TrainingRecordGUI extends JFrame implements ActionListener {
private JTextField name = new JTextField(30);
private JTextField day = new JTextField(2);
private JTextField month = new JTextField(2);
private JTextField year = new JTextField(4);
private JTextField hours = new JTextField(2);
private JTextField mins = new JTextField(2);
private JTextField secs = new JTextField(2);
private JTextField dist = new JTextField(4);
private JLabel labn = new JLabel(" Name:");
private JLabel labd = new JLabel(" Day:");
private JLabel labm = new JLabel(" Month:");
private JLabel laby = new JLabel(" Year:");
private JLabel labh = new JLabel(" Hours:");
private JLabel labmm = new JLabel(" Mins:");
private JLabel labs = new JLabel(" Secs:");
private JLabel labdist = new JLabel(" Distance (km):");
private JButton addR = new JButton("Add");
private JButton lookupR = new JButton("Look Up");
private JButton findAllByDate = new JButton("Find All");
private TrainingRecord myAthletes = new TrainingRecord();

private JTextArea outputArea = new JTextArea(5, 50);

public static void main(String[] args) {
    TrainingRecordGUI applic = new TrainingRecordGUI();
} // main

// set up the GUI
public TrainingRecordGUI() {
    super("Training Record");
    setLayout(new FlowLayout());
    add(labn);
    add(name);
    name.setEditable(true);
    add(labd);
    add(day);
    day.setEditable(true);
    add(labm);
    add(month);
    month.setEditable(true);
    add(laby);
    add(year);
    year.setEditable(true);
    add(labh);
    add(hours);
    hours.setEditable(true);
    add(labmm);
    add(mins);
    mins.setEditable(true);
    add(labs);
    add(secs);
    secs.setEditable(true);
    add(labdist);
    add(dist);
    dist.setEditable(true);
    add(addR);
    addR.addActionListener(this);
    add(lookupR);
    lookupR.addActionListener(this);
    add(outputArea);
    add(findAllByDate);
    findAllByDate.addActionListener(this);
    add(outputArea);
    outputArea.setEditable(false);
    setSize(720, 200);
    setVisible(true);
    blankDisplay();

    // test cases)
    Entry a = new Entry("Alice", 1, 2, 2003, 0, 16, 7, 3);
    Entry b = new Entry("Bob", 1, 2, 2003, 0, 14, 15, 3);
    Entry c1 = new Entry("Claire", 7, 3, 2010, 0, 26, 20, 7);
    Entry c2 = new Entry("Claire", 11, 3, 2010, 0, 24, 55, 7);
    myAthletes.addEntry(a);
    myAthletes.addEntry(b);
    myAthletes.addEntry(c1);
    myAthletes.addEntry(c2);
} // constructor

// listen for and respond to GUI events
public void actionPerformed(ActionEvent event) {
    if (event.getSource() == addR) {
        String n = name.getText();
        int m = Integer.parseInt(month.getText());
        int d = Integer.parseInt(day.getText());
        int y = Integer.parseInt(year.getText());
        float km = java.lang.Float.parseFloat(dist.getText());
        int h = Integer.parseInt(hours.getText());
        int mm = Integer.parseInt(mins.getText());
        int s = Integer.parseInt(secs.getText());
        Entry e = new Entry(n, d, m, y, h, mm, s, km);
        myAthletes.addEntry(e);
        outputArea.setText("Record added\n");
    }
    if (event.getSource() == lookupR) {
        int m = Integer.parseInt(month.getText());
        int d = Integer.parseInt(day.getText());
        int y = Integer.parseInt(year.getText());
        outputArea.setText("looking up record ...");
        String result = myAthletes.lookupEntry(d, m, y);
        outputArea.setText(result);
    }
    if (event.getSource() == findAllByDate) {
        int m = Integer.parseInt(month.getText());
        int d = Integer.parseInt(day.getText());
        int y = Integer.parseInt(year.getText());
        outputArea.setText("looking up record ...");
        String result = myAthletes.findAllEntries(d, m, y);
        outputArea.setText(result);
    }

    blankDisplay();
} // actionPerformed

public void blankDisplay() {
    name.setText("");
    day.setText("");
    month.setText("");
    year.setText("");
    hours.setText("");
    mins.setText("");
    secs.setText("");
    dist.setText("");
 }
Bablu Singh :
public String lookupEntry(int d, int m, int y) {
    ListIterator<Entry> iter = tr.listIterator();
    StringBuilder result=new StringBuilder(""); //1
    while (iter.hasNext()) {
        Entry current = iter.next();
        if (current.getDay() == d && current.getMonth() == m && current.getYear() == y)
            result.append(current.getEntry()+" ");
    }
   //2
    if(result.equals("")){
        result.append("No entires found");
    }
    return result.toString();
} // lookupEntry
  1. We are using StringBuilder instead of a string so that it will take less space and we are appending string every time when we find the new entry.

  2. If string will be empty then it will be "no result found".

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=477471&siteId=1