oppgave: highscorelist

This commit is contained in:
2026-03-03 04:22:55 +01:00
parent 0dfde2ddfb
commit 00f8009e0d
4 changed files with 119 additions and 0 deletions

View File

@@ -0,0 +1,79 @@
package oving6.highscorelist;
import java.util.List;
import java.util.ArrayList;
import java.util.Collections;
public class HighscoreList {
private int maxSize = 0;
private List<Integer> results = new ArrayList<Integer>();
private ArrayList<HighscoreListListener> highscoreListListeners = new ArrayList<HighscoreListListener>();
HighscoreList(int maxSize) {
this.maxSize = maxSize;
}
public int size() {
return results.size();
}
public int getElement(int i) {
if (i < 0 || i >= results.size()) {
throw new IllegalArgumentException("Invalid value for i");
}
return results.get(i);
}
public void addResult(int r) {
if (maxSize <= 0) {
return;
}
int idx = results.size();
for (int i = 0; i < results.size(); i++) {
if (r < results.get(i)) {
idx = i;
break;
}
}
if (results.size() < maxSize || idx < results.size()) {
results.add(r);
Collections.sort(results);
while (results.size() > maxSize) {
results.removeLast();
}
sendHighscoreEvent(idx);
}
}
public void addHighscoreListListener(HighscoreListListener listener) {
highscoreListListeners.add(listener);
}
public void removeHighscoreListListener(HighscoreListListener listener) {
highscoreListListeners.remove(listener);
}
private void sendHighscoreEvent(int i) {
for (HighscoreListListener listener : highscoreListListeners) {
listener.listChanged(this, i);
}
}
@Override
public String toString() {
String s = "[";
for (int i = 0; i < results.size(); i++) {
s += results.get(i);
if (i < results.size() - 1) {
s += ",";
}
}
s += "]";
return s;
}
}

View File

@@ -0,0 +1,5 @@
package oving6.highscorelist;
public interface HighscoreListListener {
void listChanged(HighscoreList l, int i);
}

View File

@@ -0,0 +1,35 @@
package oving6.highscorelist;
import java.util.Scanner;
public class HighscoreProgram implements HighscoreListListener {
HighscoreList highscoreList;
void main() {
init();
run();
}
void init() {
highscoreList = new HighscoreList(10);
highscoreList.addHighscoreListListener(this);
}
void run() {
System.out.println("Starting listener:");
Scanner scanner = new Scanner(System.in);
while (true) {
if (scanner.hasNextInt()) {
highscoreList.addResult(scanner.nextInt());
} else {
scanner.next();
}
}
}
@Override
public void listChanged(HighscoreList l, int i) {
System.out.println("List[" + i + "]: " + l.toString());
}
}