Ach was so schlimm ist das Programm dann auch wieder nicht hab mir größte mühe gegeben. Und bin leider noch nicht so gut/fähig, den letzten Schritt zu machen, um das Programm fertig zu stellen. Wäre echt für Hilfe dankbar. Evtl kannst du ja mal 5min opfern und was hinzimmern??
vg benni
Beiträge von polenben
-
-
ja genau sowas in der art mache ich gerade, hab nur mittlweile schon festgestellt, dass jetzt mit der namenszuordnung nicht mehr klappt..
bin total ratols im mom und wäre sogar für fertigen code schon dankbar obwohl ich nichts dabei lerne dann -
Ok danke schonmal, hab das mit dem compareable schon einmal ausprobiert, aber hatte a noch meine probleme...
werde mich da jetzt aber noch einmal reinlesen und hoffe das es klappt, weil ich schon länger zeit an dem ding rumache.
aber wie gesagt nochmal thx auch für den formatierungs hinweis, weil manchmal sieht man den wald vor lauter bäumen nicht oder machts umständlicher als nötig -
wie knoten löschen? was meinst damit?
ich muss ja die namen jedes mal auch neu auslesen da hast du recht, da sie sich ja verändern in ihrer vielzahl, jetzt will ich sie aber geordnet haben also in einer liste wie du schon richtig gesagt hast. aber wie???
steh voll aufm schlauch -
Hallo alle zusammen,
hab ein problem mit meinem Code.
Also hier einen kurze Erklärung zu meinem Problem. Ich will mit meinen Programm eine Spalte aus einer Excel Datei auslesen, inder Namen stehen die auch mehrfach aufgeführt sind, diese Namen sollen gezählt werden und dann letztendlich nach Programm durchlauf ausgegeben werden. (zb: 13xZimmerman, 8xMaier, 18xTobias,etc)
Dies funktioniert bei meinem Programm schon ohne Probleme auch schon die Ausgabe in eine Excel Datei.
So und jetzt zu meinem Problem. ich wil die ausgelesenen Werte mit Namen in eine Reihenfolge bringen, sozusagen das die Namen nach der Anzahl der Vorkommnisse sortiert wird. egal ob absteigend oder aufsteigend. (Die liste der Namen wächst stetig und es kommen auch immer neue namen dazu, sodass sich die reihenfolge der eingelesen Namen stetig ändern wird.
Ich habe es schon mit einer JTable probiert aber, aber dann hab ich mir das ganze prog geschossen
also ich hoffe das mir jemand von euch helfen kann und mir evtl sogar schon den verbesserten code posten kann.
thx benni
Code
Alles anzeigenpublic class NameCounter { private String name; private int counter; /** * Konstruktor */ public NameCounter(String name) { this.name = name; this.counter = 1; } /** * Erhöht den Namenzähler */ public void setCounterUp() { this.counter++; } /** * Gibt den Namen zurück. * * @return {@link String} */ public String getName() { return name; } /** * Gibt die Anzahl der gezählten Namen zurück. * * @return {@link Integer} */ public int getCounts() { return counter; } }
Java
Alles anzeigenimport java.io.File; import java.io.IOException; import java.util.Vector; import java.util.Date; import jxl.*; import jxl.write.*; import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; import java.io.*; import java.lang.*; import jxl.write.Number; public class ExcelTest { // Initialisieren der globalen Variablen public String path = "//java/test/namen.xls"; public Workbook workbook = null; public Vector<NameCounter> nameVector = new Vector<NameCounter>(); //private Vector <NameCounter> nameVector = new Vector(); /** * Programm starten. */ public void start() { // Abfangen der Exceptions try { // Einlesen der Datei this.workbook = Workbook.getWorkbook(new File("//java/test/namen.xls")); } catch (BiffException e) { System.out.println("BiffException" + e.getMessage()); } catch (IOException e) { System.out.println("IOException" + e.getMessage()); } // Tabelle initialisieren Sheet sheet = this.workbook.getSheet(0); // Erstellen der Zellenobjekte String cellText; NameCounter nameCounter; // Die zu durchsuchende Spalte und Startzeile initialisieren int suchSpalte = 4; int startZeile = 7; // Schleife für Zellenüberprüfung for (int i = startZeile; i < sheet.getRows(); i++) { // Einlesen der Zellen in die String-Variablen cellText = sheet.getCell(suchSpalte, i).getContents().trim(); nameCounter = isNameInVector(cellText); if (nameCounter == null) { if (!cellText.equals("")) { this.nameVector.add(new NameCounter(cellText)); } } else { nameCounter.setCounterUp(); } } try{ WritableWorkbook workbook1 = Workbook.createWorkbook(new File("//java/test/ausgabe13.xls")); WritableSheet sheet1 = workbook1.createSheet("meop2", 2); // Schleife für die Konsolenausgabe for (int i = 0; i < this.nameVector.size(); i++) { nameCounter = this.nameVector.elementAt(i); System.out.println(nameCounter.getName() + ": " +" \t "+ nameCounter.getCounts()); Label label = new Label(3, (i+5),nameCounter.getName() + ": " ); sheet1.addCell(label); Number number = new Number(6, (i+5), nameCounter.getCounts()); sheet1.addCell(number); } workbook1.write(); workbook1.close(); } catch (Exception e) { System.out.println("Exception: " + e.getMessage()); } } /** * Überprüfen ob der Name bereits im Vector vorhanden ist. */ public NameCounter isNameInVector(String name) { NameCounter nameCounter = null; NameCounter nameCounterTest; for (int i = 0; i < nameVector.size(); i++) { nameCounterTest = nameVector.elementAt(i); if (nameCounterTest.getName().equals(name)) { nameCounter = nameCounterTest; break; } else { nameCounter = null; } } return nameCounter; } /** * Mainmethode */ public static void main(String[] args) { new ExcelTest().start(); } }
die API zum Excel-File auslesen gibts hier: falls ihr sie benötigt http://jexcelapi.sourceforge.net/resources/java…docs/index.html
und im anhang findet ihr die namensdatei
thx benni