Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding
You last visited: Today at 20:16

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[Java] Sortieren, Löschen usw..

Discussion on [Java] Sortieren, Löschen usw.. within the General Coding forum part of the Coders Den category.

Reply
 
Old   #1
 
XxharCs's Avatar
 
elite*gold: 34
Join Date: Apr 2011
Posts: 1,475
Received Thanks: 1,228
[Java] Sortieren, Löschen usw..

Huhu, hab ein kleines Prob in meinem programm.
Er sortiert und löscht irgendwie falsch, bzw eher das sortieren funktioniert nicht wie es sollte.

hoffe ihr könnt mir helfen

Notiz.java
Code:
public class Notiz
{
    //Attribute
   private String betreff;
   private String inhalt;
   
   public Notiz(){
       betreff = "";
       inhalt = "";
    }
    
    public Notiz(String be, String in){
        betreff = be;
        inhalt = in;
    }
    
    public String getBetreff(){
        return betreff;
    }
    
    public String getInhalt(){
        return inhalt;
    }
    
    public void setBetreff(String be){
        betreff = be;
    }
    
    public void setInhalt(String in){
        inhalt = in;
    }
    
    public String textForm(){
        return "Betreff: "+ betreff + "\nInhalt: "+ inhalt;
    }
}
Notizbuch.java
Code:
public class Notizbuch implements Statistik
{
    //Attribut
    private Notiz[] buch;
    
    public Notizbuch(Notiz notiz){
        buch = new Notiz[1];
        buch[0] = notiz;
    }
    
    /**
     * Eine Methode die die vorhandene Notiz löscht
     * 
     * @param notiz die Notiz die gelöscht werden soll
     */
    public void loeschen(Notiz notiz){
        Notiz[] temp = new Notiz[buch.length -1];
        int neuIndex = 0;
        for(int altIndex = 0; altIndex < buch.length; altIndex++){
            if(!(buch[altIndex].getBetreff().equals(notiz.getBetreff())) && (buch[altIndex].getInhalt().equals(notiz.getInhalt()))) {
                temp[neuIndex] = buch[altIndex];
                neuIndex++;
            }
        }
        buch = temp;
    }
    /**
     * Sucht den Betreff in der Notiz
     * 
     * @param be der gesuchte Betreff
     */
    public Notiz suchen(String be){
        for(int i = 0; i < buch.length; i++){
            if(buch[i].getBetreff().equals(be)){
                return buch[i];
            }
        }
        return buch[0];
    }
    /**
     * Eine Methode die den Betreff löscht
     * 
     * @param be der Betreff der gelöscht werden soll
     */
    public void loeschen(String be){
        Notiz[] temp = new Notiz[buch.length -1];
        int neuIndex = 0;
        for(int altIndex = 0; altIndex < buch.length -1; altIndex++){
            if(!(buch[altIndex].getBetreff().equals(be))){
                temp[neuIndex] = buch[altIndex];
                neuIndex++;
            }
        }
        buch = temp;
    }
    /**
     * Eine Methode die eine Notiz hinzufügt
     * 
     * @param notiz die Notiz
     */
    public void hinzufuegen(Notiz notiz) {
        Notiz[] buffer = new Notiz[buch.length +1];
        int i = 0;
        for( ; i < buch.length; i++) {
            buffer[i] = buch[i];
        }
        buffer[i] = notiz;
        buch = buffer;
    }
    /**
     * Eine Methode die die Notiz sotiert
     */
    public void sortieren() {
        for(int i = 0; i < buch.length -1; i++) {
            if(buch[i].getBetreff().compareTo(buch[i+1].getBetreff()) < 0) {
                Notiz buffer = buch[i];
                buch[i] = buch[i+1];
                buch[i+1] = buffer;
            }
        }
    }
    
    public String liste() {
        String ausgabe = "";
        for(int i=0; i < buch.length; i++) {
            ausgabe += buch[i].getBetreff() + "\n" + buch[i].getInhalt();
            ausgabe += "\n";
        }
        return ausgabe;
    }
    
    @Override
    public double summe(){
		return (double)buch.length;
    }
    
    @Override
    public int anzahl(Object o){
    	int anz = 0;
    	for(int i = 0; i < buch.length;i++){
    		if(buch[i].equals((Notiz) o)){
    			anz++;
    		}
    	}
    	return anz;
    	
    }
}
Statistik.java
Code:
public interface Statistik {
	
    /**
     * Berechnet die Summe aller relevanten Werte der Klasse und gibt sie zurück.
     * 
     * @return die Summe der relevanten Werte
     */
	public double summe();
	
    /**
     * Berechnet die Anzahl von den Vorkommnissen des Parameters o innerhalb
     * des Objekts und gibt sie zurück.
     * 
     * @param o der Wert, dessen Vorkommen gezählt wird
     * @return   die Anzahl von o
     */
	public int anzahl(Object o);
}
TestNotiz.java
Code:
import javax.swing.JOptionPane;

public class TestNotiz
{
    public static void main(String []args) {
        String betreff = JOptionPane.showInputDialog("Bitte schreiben Sie einen Betreff ein: ");
        String inhalt = JOptionPane.showInputDialog("Bitte schreiben Sie einen Inhalt ein: ");
        
        Notiz s1 = new Notiz(betreff, inhalt);
        Notizbuch n1 = new Notizbuch(s1);
        
        int anz = Integer.parseInt(JOptionPane.showInputDialog("Wie viele Notizen wollen Sie eingeben ?"));
        
        for(int i=0; i < anz; i++){
            betreff = JOptionPane.showInputDialog("Bitte schreiben Sie einen Betreff ein: ");
            inhalt = JOptionPane.showInputDialog("Bitte schreiben Sie einen Inhalt ein: ");
            s1.setBetreff(betreff);
            s1.setInhalt(inhalt);
            n1.hinzufuegen(s1);
        }
        betreff = JOptionPane.showInputDialog("Bitte geben Sie einen Betreff einer Notiz ein, welche Sie löschen wollen: ");
        n1.loeschen(betreff);
        
        betreff = JOptionPane.showInputDialog("Bitte geben Sie einen Betreff einer Notiz ein, welche Sie suchen wollen: ");
        Notiz notiz = n1.suchen(betreff);
        
        if(!(notiz == null)){
            JOptionPane.showMessageDialog(null, notiz.textForm());
        }
        else{
            JOptionPane.showMessageDialog(null, "Die Notiz wurde nicht gefunden!");
        }
        
        JOptionPane.showMessageDialog(null, n1.liste());
        n1.sortieren();
        JOptionPane.showMessageDialog(null, n1.liste());
        
        
        int anzahl = n1.anzahl(s1);
        JOptionPane.showMessageDialog(null, anzahl);
        double summe = n1.summe();
        JOptionPane.showMessageDialog(null, summe);
    }
}
XxharCs is offline  
Old 06/17/2012, 15:26   #2
 
xNopex's Avatar
 
elite*gold: 0
Join Date: May 2009
Posts: 827
Received Thanks: 471
Code:
public void sortieren() {
        for(int i = 0; i < buch.length -1; i++) {
            if(buch[i].getBetreff().compareTo(buch[i+1].getBetreff()) < 0) {
                Notiz buffer = buch[i];
                buch[i] = buch[i+1];
                buch[i+1] = buffer;
            }
        }
    }
Sortiere nach deinem Verfahren mal die Zahlen 4,9,2,1,11 dann weißt du, was falsch ist.
xNopex is offline  
Old 06/17/2012, 15:51   #3
 
XxharCs's Avatar
 
elite*gold: 34
Join Date: Apr 2011
Posts: 1,475
Received Thanks: 1,228
ich denk nicht das es dies das problem ist, da er witzigerweise immer die letzte eingegebene notiz speichert, und wenn ich die letzte lösche dann, und zb nach der 2 frage bekomm ich ein fehler beim suchen, sprich bei dieser stelle:
Code:
 public Notiz suchen(String be){
        for(int i = 0; i < buch.length; i++){
            if(buch[i].getBetreff().equals(be)){ // <- hier
                return buch[i];
            }
        }
        return buch[0];
    }
XxharCs is offline  
Old 06/17/2012, 16:14   #4
 
elite*gold: 0
Join Date: Jun 2012
Posts: 8
Received Thanks: 3
Das die letzte Eingabe abgespeichert wird liegt daran das du dem Notizbuch immer nur des gleiche Objekt übergiebst und nur den Betreff und den Inhalt änderst, sprich x mal das Selbe Objekt Vorhanden ist.

Einfach in der TestNotiz.java

Code:
Notizbuch n1 = new Notizbuch(new Notiz(betreff, inhalt));
 //bzw
n1.hinzufuegen(new Notiz(betreff, inhalt));
dann ist das schonmal gefixt

PS: Mit einem Vector ist des ganze einfacher zu lösen.
DaKku0815 is offline  
Old 06/17/2012, 16:20   #5
 
XxharCs's Avatar
 
elite*gold: 34
Join Date: Apr 2011
Posts: 1,475
Received Thanks: 1,228
ich denk nicht das es daran liegt, weil das was du machst ist schon das:
Code:
Notiz s1 = new Notiz(betreff, inhalt);
Notizbuch n1 = new Notizbuch(s1);
und später beim hinzufügen:
Code:
n1.hinzufuegen(s1);
XxharCs is offline  
Old 06/17/2012, 16:33   #6
 
elite*gold: 0
Join Date: Jun 2012
Posts: 8
Received Thanks: 3
Ich hab mal was gebastelt das du siehst das da doch ein Fehler drin steckt . Wär bei primitiven Datentypen aber ned so.

Lass des einfach mal ablaufen ^^

Code:
public class TestIt
{
    public static void main(String []args) {
    	Vector<TestString> vecStr = new Vector<TestString>();
    	TestString str = new TestString("Hallo");
    	
    	vecStr.add(str);
    	str.setStr("das");
    	vecStr.add(str);
    	str.setStr("ist");
    	vecStr.add(str);
    	str.setStr("ein");
    	vecStr.add(str);
    	str.setStr("Test");
    	vecStr.add(str);
    	
    	for(int i = 0;i<vecStr.size();i++){
    		System.out.println(vecStr.get(i));
    	}
}
Code:
public class TestString {
	private String str = "";
		public TestString(String str){
			this.str = str;
		}
		public void setStr(String str){
			this.str = str;
		}
		@Override
		public String toString() {
			return str;
		}
}
DaKku0815 is offline  
Reply


Similar Threads Similar Threads
[JAVA Error] Could not create the java virtual machine
07/21/2013 - Technical Support - 10 Replies
Schönen Abend! Leider hat es sich aus einem unerfindlichen Grund ergeben, dass sobald ich die Minecraft.exe starten will die Errormeldung kommt. Die Tips auf Minecraft.net habe ich schon ohne Erfolg befolgt. Hoffe ihr könnt mir weiterhelfen... Mein PC:
Java: ZahlenArray sortieren?!
10/14/2011 - General Coding - 12 Replies
Hey E*pvpers. Hab das Problem, dass ich mir ein Array ausgeben lasse mit dem ich dann später verschiedenen Sachen machen wollte ... Wollte die Zahlen, die ausgegeben werden in dem Array jetzt sortieren. also von klein -> groß. Bin mir nicht genau sicher wie man das macht, bzw irgendwann würd ich es warscheinlich hinkriegen, dann aber ziemlich umständlich und mit tausenden Schleifen.
Zahlen sortieren in C
02/10/2011 - General Coding - 13 Replies
Bräuchte nochmal ein klein bisschen hilfe bei einer C aufgabe. Ich muss eine zahlenfolge eingeben maximal 20zahlen und diese sortiert ausgeben, aber jeder durchlauf soll angezeigt werden, soweit so gut das programm läuft auch, jedoch hab ich 2 sachen die mich sehr stören 1. Man muss jetzt -1 eingeben wenn man keine zahlen mehr eingeben möchte, bekomme es aber irgendwie nur so hin, fände es besser wenn man am ende enter drückt und fertig ;) 2. Fänd ich es schöner wenn man nicht nach jeder...
taschen sortieren?!
01/14/2007 - World of Warcraft - 1 Replies
tach. soweit ich weiss gibt es einzellne addons wie bagsort die die taschen inhalte (also items) sortieren. leider funzt das nich mehr >_> gibt es UIs oda andere addons, die sone funktion beinhalten? kthnxbye :D



All times are GMT +1. The time now is 20:16.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.