Я довольно новичок в этом, так что все идет.
У меня есть тренировочный отчет GUI, который отслеживает выступления спортсменов. Я изо всех сил пытаюсь написать метод findAllEntries. Предполагается go просмотреть список и вернуть все элементы, которые соответствуют определенной дате, месяцу и году, в виде строки (аналогично lookupEntry, но мне нужно, чтобы все элементы отображались в одной строке ??)
Например когда я запускаю код, он должен показывать записи Боба и Алисы, но показывает только Бобса.
Независимо от того, что я делаю, он дает мне только один элемент.
Вся помощь будет оценена!
// 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("");
}