Я искал ответ на этот вопрос, но, похоже, моя проблема более конкретна, чем другие.
Итак, у меня есть два класса и один интерфейс. Интерфейс называется «Comparable», и я знаю, что у интерфейса есть собственный метод, но мы вернемся к этому через секунду.
То, что у меня есть, это классы под названием "cityMain", "City2" и интерфейс "Comparable"
Что моя программа сейчас делает, так это то, что она читает из текстового файла что-то вроде:
75242; Упсала
90325; Умео
96133; Боден
23642; Höllviken
35243; Векшё
51000; Йончёпинг
72211; Вестерос
и т.д.
Точка с запятой удаляется, а целые числа и строки разделяются на две части.
Цифры - это почтовые индексы, а рядом с ними просто название некоторых штатов в Швеции. Прочитав его из «mainCity», я на самом деле сортирую его так, чтобы верхний почтовый индекс с его именем оказался сверху, то есть от наименьшего числа к наибольшему.
Затем, когда ему удается прочитать его, он переходит к классу "City2", а оттуда он просто проходит каждый метод, один zip и одно состояние за один раз.
ОДНАКО: Atm я на самом деле звоню все с моего основного, а не с моего интерфейса.
Он должен выглядеть так: "mainCity" -> "Comparable" -> "City2".
Программа работает как есть, но я хочу, чтобы она была правильной!
Я пытался перейти от «Comparable», а затем назвать его так, но он не сработал и не дал мне ошибки.
Обратите внимание: опять же, у Comparable есть свой собственный метод, но я не использовал его из-за того, что я не знаю, как его применить, как он выглядит сейчас.
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
public class cityMain {
private static BufferedReader r;
public static void main(String[] args) {
int Z = 0;
String C = null;
try {
ArrayList<City2> City = new ArrayList<City2>();
FileReader file = new FileReader("C:\\Users\\me\\Desktop\\BB.dat");
r = new BufferedReader(file);
String currLine;
while ((currLine = r.readLine()) != null) {
if (currLine.trim().length() > 0) {
String[] split = currLine.split(";");
Z = (Integer.parseInt(split[0]));
C = (split[1]);
City.add(new City2(Z, C));
}
}
Collections.sort(City, (c1, c2) -> c1.getZipCode() - c2.getZipCode());
for (int i = 0; i < City.size(); i++) {
System.out.println(City.get(i).getZipCode() + " " + City.get(i).getCityName());
}
} catch (IOException e) {
System.out.println("Erorr : " + e);
}
}
}
HERE IS A DIFFERENT CLASS:
public class City2 implements Comparable {
private int zipCode;
private String cityName;
public City2(int zipCode, String cityName) {
this.zipCode = zipCode;
this.cityName = cityName;
}
public int getZipCode() {
return zipCode;
}
public String getCityName() {
return cityName;
}
public void addAndPrint() {
}
}
HERE IS THE INTERFACE:
public interface Comparable {
public int getZipCode();
public String getCityName();
public void addAndPrint();
}
Что я должен получить, что я уже получаю, но не так, как я должен это делать!
23642 Höllviken
35243 Växjö
51000 Йёнчёпинг
72211 Вестерос
75242 Упсала
90325 Умео
96133 Боден
Все было бы очень важно прямо сейчас!