methode lösen

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
hi leute ich habe hier ein uni problem und würde dieses gerne lösen wollen bzw mit blatt und stift nachrechnen,aber anscheinend fehlt mir noch der durchblick, ich hoffe mir wird geholfen.gruß

1.Methode

static public int[] EntferneDoppelteR(int[] r) { // **
// Liefert eine Reihung, die jedes in r vorkommende Element
// genau einmal enthaelt (auch wenn es in r mehrmlas vorkommt)
Code:
int[] erg = new int[r.length];
		s1:for (int i = 0; i < r.length; i++) {
			s2:for (int j = i+1; j < r.length; j++) {
				if(r[i]!=r[j])continue s1;
				erg[i]= r[i+j] ;
}
}
/* meine vorgehensweise:erzeuge eine kopie von r
* durchlaufe alle elemente von r
* durch eine geschachtelte for-anweisung, die sowohl aktuelle und benachbart.
* komponente durchsucht.
* als letztes weise der variablen erg den neuen wert zu.
* problem:weiß nicht wie ich einer int[]erg was zuweisen kann.
*/
return erg;
} // EntferneDoppelteR

2.methode
/*Implementieren Sie in Java ein rekursives Programm, das solange
* einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen eingegeben wird,
* und anschließend die eingegebenen Zeichen in umgekehrter Reihenfolge wieder
* auf den Bildschirm ausgibt (Achtung: keine Arrays oder Strings verwenden!).
Beispiel:
Eingabe: a b c
#
Ausgabe: cba*/

// meine lösung
Code:
static public void drehrumRek(String s){
		s = EM.liesString();
		if(s=="#")
			System.out.println(" ");
		 drehrumRek(s.substring(0, s.length()-1));
}
 

0x7F800000

Top Contributor
Anonymous hat gesagt.:
hi leute ich habe hier ein uni problem und würde dieses gerne lösen wollen
mein Deutsch ist zwar etwas schwach, aber dennoch bin ich mir recht sicher, dass dieser Satz eigentlich kein Problem mit Java, sondern ein Problem mit der Motivation betrifft ???:L Zur Motivation kann ich dir Sagen: Java ist toll, wenn man das richtig gut kann, kriegt man einen Haufen Kohle
kohlelagerii.jpg



und den Respekt der homies:


alexgroup120606_600x448.jpg

:lol:

bzw mit blatt und stift nachrechnen,aber anscheinend fehlt mir noch der durchblick
willst du das Umdrehen der Wörter erstmal schriftlich üben oder was :shock: ?

_____________________________________________________________________________
Nun gut, das ist zwar alles sehr "lustig" :autsch: aber nun zu den Fragen...


1. Methode
-Sprungmarken ("s1" "s2"...) werden in den seltensten Fällen gebraucht. Für das was du machen willst, braucht man gar keine Sprungmarken, erst recht nicht 2 auf einmal... Am besten ganz vermeiden, solange es geht, das macht den code schwer lesbar.

-methodenbezeichner fangen mit einem Kleinbuchstaben an
-was soll dieses "R" am ende des methodenbezeichners??
-was hat es mit benachbarten elementen auf sich? inwiefern wirkt sich die Nachbarschaft auf Einzigartigkeit aus? Ist das array etwa immer sortiert?

-dein Ansatz ist (zumindest für mich) völlig unverständlich. Auf jeden fall macht es recht wenig Sinn, das ergebnisarray gleich mit der selben Länge wie r zu erzeugen, weil du ja nicht vorher weiß, wieviele Elemente du rausschmeißen wirst, d.h. wie lang das Ergebnisarray überhaupt sein soll. Das musst du erst berechnen.

Ich würde das folgende intuitive Verfahren vorschlagen:
Code:
//pseudocode
public int[] removeDuplicates(int[] a){
  //erzeuge ein boolean-Array, das genauso lang ist wie a
  //laufe a mit einer doppeltschleife durch
      //markiere dabei alle elemente, die doppelt auftreten, zähle nebenbei wieviele das sind
  //erzeuge ein ergebnisarray mit passend vielen einträgen
  //durchlaufe a und das boolean-Array, übertrage alle unmarkierten elemente aus a in das ergebnisarray
  //gebe das ergebnisarray zurück
}
das ist praktisch so, als würde man sich die zahlenfolge anschauen, dann alle doppelten mit nem bleistift zukritzeln, und am ende alle noch sichtbaren in eine neue liste übernehmen und ausgeben.

2. Methode
Code:
	if(s=="#")
das ergibt immer false. Mit == überprüfst du ob das Objekt dasselbe ist. Dir ist das Objekt aber völlig egal, du willst den Inhalt des Strings vergleichen, und das bewerkstelligt man mit .equals(String other)
Ansonsten würde ich eher empfehlen, einzelne char's einzulesen, und dann mit
Code:
        //s soll ein char sein
	if(s=='#')
alles auf zeichenebene überprüfen, ansonsten kann der benutzer ja lange zeichenketten statt einzelner buchstaben eingeben...
Code:
System.out.println(" ");
So, was ist das denn? Das ist der einzige Befehl, der bei deiner Methode irgendwas ausgibt, und es gibt ein leeres Zeichen aus. Was soll denn da rauskommen?

Code:
drehrumRek(s.substring(0, s.length()-1));
zum einen ist die Reihenfolge der Ausgabe/rekursiven Aufrufs falsch. Du willst es ja in umgekehrter Reihenfolge ausgeben, d.h. zuerst rekursiv aufrufen, dann das eigene eingelesene zeichen ausgeben.

Zum anderen: was zum teufel soll diese Übergabe von s? Es wird doch bei jedem Aufruf eh neu überschrieben, wozu brauchst du das also?

Und zuletzt der wichtigste Punkt: Wo ist denn in deiner Methode ein Rekursionsende?? Es wird bei jedem Aufruf die methode selbst erneut aufgerufen. Damit geht dein Aufruf in eine Endlosschleife, und wartet bis du dir die Finger wundgetippt hast, oder bis der Stack alle ist. Denk nochmal drüber nach... :toll:
 
G

Guest

Gast
hi ich danke dir für deine schnelle hilfe.
1.zu deinen fragen richtig das man methoden namen klein schreibt, diese ist vorgegeben,also stammt nicht von mir.
2.die sprungmarken verwende ich weil ich mir das so dachte:wenn der compiler einen doppelgänger entdeckt soll er rauspringen und an die nächste indexposition gehen, wenn er dann keine doppelgänger findet soll das ergebnis zurückgeliefert werden.
3. die reihung ist unsortiert bsp int[] ira={1,2,3,1}; es werden die beiden einsen als nur eine eins gezählt und
als int[] erg zurückgeliefert.
4. zu deinen pseudocode:
was meinst du mit//pseudocode
Code:
public int[] removeDuplicates(int[] a){
  //erzeuge ein boolean-Array, das genauso lang ist wie a
  //laufe a mit einer doppeltschleife durch
      //markiere dabei alle elemente, die doppelt auftreten, zähle nebenbei wieviele das sind
  //erzeuge ein ergebnisarray mit passend vielen einträgen
  //durchlaufe a und das boolean-Array, übertrage alle unmarkierten elemente aus a in das ergebnisarray
  //gebe das ergebnisarray zurück
}

//markiere dabei alle elemente, die doppelt auftreten, zähle nebenbei wieviele das sind?
meinst du etwa bsp a==a[j]
//erzeuge ein ergebnisarray mit passend vielen einträgen?
bsp int[] ir= new int[];soll da a.length rein? oder wie geht das?
lieben gruß
 

0x7F800000

Top Contributor
Erstmal: hör bitte auf die code tags so komisch mitten in den code reinzustopfen, in dem forum sind die auch so schon nicht die tollsten, und wenn du die so komisch verwendest, sieht es total zum davonlaufen aus :D

Mit
Anonymous hat gesagt.:
//markiere dabei alle elemente, die doppelt auftreten, zähle nebenbei wieviele das sind
meinte ich, dass du in der methode ein boolean array erstellst, das lediglich zur markierung von "doppelt: ja/nein?" dient. Doppelte einträge kann man mit einer stinknormalen integer-variablen mitzählen, etwas genauer:

Code:
public static int[] removeDuplicates(int[] a){
   boolean[] redundant=new boolean[a.length]; //markierung für "doppelt:ja/nein?"
   int numberOfRedundantElements=0;             //zählt mit, wieviele du rausgeschmissen hast
   for(int x=0; x<a.length; x++){
      if(!redundant[x]){
         //bisher nicht als überflüssig markiert, alle nachfolgenden durchlaufen, unnötige durchstreichen
         for(int y=x+1; y<a.length; y++){
            if(a[x]==a[y]){
                //y als redundant markieren, zähler inkrementieren
                redundant[y]=true;
                numberOfRedundantElements++;
            }
         }
      }
   }
   
   //erst jetzt das ergebnisarray erstellen
   int[] result=new int[a.length-numberOfRedundantElements];
   //result mit den unmarkierten elementen befüllen
   ...
   //result zurückgeben
   ...
}
na toll, jetzt hab ich den ganzen code fast schon hingeschrieben... :autsch:

Übrigens: diese methode ist alles andere als effizient. Hat den aufwand O(n²). Wenn man das mit einer normalen doppelt verketteten Liste machen würde, diese mit Mergesort sortieren, und dann nur noch nachbarn prüfen würde, würde es schon in O(n log(n)) laufen.

Aber das ist die naivste und intuitivste und am leichtesten zu implementierende variante. :roll:
 
G

Guest

Gast
hi, respekt homy. ich glaube erst wenn es weh tut lernt man am meisten.
danke dir für dein beispiel. ich habe mal ein bischen recherchiert und es gibt ja sammlungsttypen die doppelgänger
verbieten wie hashset und treeset. ich probiere auch schon rum wie das mit sammlungen funktionieren würde, da ich immer int[] zurückliefern muß, kannst du mir mal da bitte weiterhelfen.
gruß
 

0x7F800000

Top Contributor
Selbstverständlich kann man alles mit einer zeile in ein TreeSet packen, aber darum geht es bei solchen aufgaben nicht.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Differenz-Methode mit Array lösen Java Basics - Anfänger-Themen 14
T Rekursive Methode Java Basics - Anfänger-Themen 13
Ü Methode soll Quadrat aus der Summer zurückgeben Java Basics - Anfänger-Themen 10
P Objekt einer Methode eines anderen Objektes übergeben Java Basics - Anfänger-Themen 5
Leyla Spezifischte Methode Java Basics - Anfänger-Themen 16
M Methode zielnah zeigt das gewünschte Ausgabe nicht an Java Basics - Anfänger-Themen 3
L Variablenwerte aus einer Methode übergeben Java Basics - Anfänger-Themen 2
T Methode soll etwas ausrechnen und zurückgeben (klappt nd) hat wer eine Idee? Java Basics - Anfänger-Themen 11
P Main Methode scheint Constructor aufzurufen, ohne dass es so gecoded ist Java Basics - Anfänger-Themen 2
T Aufruf der Methode einer Oberklasse, wenn sie in der Unterklasse überschrieben ist. Polymorphie. Java Basics - Anfänger-Themen 2
C Zugriff auf Methode Java Basics - Anfänger-Themen 2
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
T Methode akzeptiert String nicht Java Basics - Anfänger-Themen 18
M Methode sperren bis ein Kriterium erfüllt wurde Java Basics - Anfänger-Themen 3
D Switch Case Methode aufrufen Java Basics - Anfänger-Themen 3
C Unbekannte Methode add bei Klasse die JTree erweitert Java Basics - Anfänger-Themen 14
M methode aufrufen ohne parameter Java Basics - Anfänger-Themen 1
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
monsterherz einfache Methode mit Fehler den ich nicht finde Java Basics - Anfänger-Themen 21
Ostkreuz Wieso wird die Methode nochmal aufgerufen? Java Basics - Anfänger-Themen 5
G Variable aktualisiert sich nicht in rekursiver Methode Java Basics - Anfänger-Themen 4
MoxMorris Wie macht man String[] = String[] aus einer anderer Methode? Java Basics - Anfänger-Themen 18
Say super.methode / super.variable und super(variable) Java Basics - Anfänger-Themen 2
B Wie kann ich folgende Klasse/Methode per Button ausführen? Java Basics - Anfänger-Themen 1
D Interface Methode wird ungewollt in der Subklasse überschrieben Java Basics - Anfänger-Themen 5
L Methoden Eine Methode um zu testen ob es ein Nachbar gibt Java Basics - Anfänger-Themen 10
til237 Iterative Methode in rekursive Methode umschreiben Java Basics - Anfänger-Themen 4
M Daten aus errechneter Methode in Datenbank(SQLite) schreiben Java Basics - Anfänger-Themen 60
D next() Methode mehrfach verwenden Java Basics - Anfänger-Themen 1
Ostkreuz Methoden Von Dezimal zu Hexadezimal Methode toHex Java Basics - Anfänger-Themen 2
I Entity Objekt nicht gefunden -> Webhook empfangen in der gleichen Methode (Transaktion) Java Basics - Anfänger-Themen 37
N Throw an Main Methode übergeben Java Basics - Anfänger-Themen 7
M Methoden Methode 'wiederhole' nicht gefunden (Uebersetzungsfehler) Java Basics - Anfänger-Themen 1
H Zu langen String aufteilen - bequeme Methode? Java Basics - Anfänger-Themen 14
_user_q Wie eine Methode/Funktion aus einer Klasse mit Constructor aufrufen? Java Basics - Anfänger-Themen 20
S Array mit Methode löschen Java Basics - Anfänger-Themen 2
J Java To String Methode, Array mit For-Schleife Java Basics - Anfänger-Themen 2
T Variable von Objekten in einer Methode überprüfen Java Basics - Anfänger-Themen 26
M Anzahl Kommandozeilenparamter mittels Methode Java Basics - Anfänger-Themen 11
D Methode: Array Reihenfolge tauschen Java Basics - Anfänger-Themen 3
julian0507 Array aus Methode in anderer Methode sichtbar machen Java Basics - Anfänger-Themen 10
frager2345 Problem mit Methode Java Basics - Anfänger-Themen 4
J Die statische Main-Methode ändert Instanzvariable? Java Basics - Anfänger-Themen 10
D Methode aus dem Aufrufer aufrufen Java Basics - Anfänger-Themen 1
T IOStreams read(byte[]b) methode Java Basics - Anfänger-Themen 2
frager2345 Java Singleton Muster -> Methode für Konstruktor mit Parametern Java Basics - Anfänger-Themen 3
U Beispiel Methode size() vom "Collection"-interface... Wie kann man sichtbar machen, was die Methode unter der Haube macht? Java Basics - Anfänger-Themen 8
D Warum kann ich hier nicht auf die Methode zugreifen? Java Basics - Anfänger-Themen 5
M generate Methode für Streams Java Basics - Anfänger-Themen 6
M Methoden Zweidimensionaler Array mit Setter Methode ändern Java Basics - Anfänger-Themen 4
I Optionaler Parameter bei Methode, der nur optional ist? Java Basics - Anfänger-Themen 6
berserkerdq2 Wozu benötigt man den BiPredicate, kann ich nicht einfach eine normale Methode nutzen, statt BiPredicate? Java Basics - Anfänger-Themen 3
T Linked List set-Methode Java Basics - Anfänger-Themen 2
D Arrays an replaceAll-Methode übergeben Java Basics - Anfänger-Themen 12
B Attribute eines Objekts einer Klasse durch statische Methode einer 2. Klasse ändern? Java Basics - Anfänger-Themen 32
berserkerdq2 Habe eine Klasse, welche public ist, diese hat eine public Methode, die nicht static ist. Wenn ich nun versuche aufzurufen Probleme? Java Basics - Anfänger-Themen 8
viktor1 Methoden Methode schreiben static void readText (String filename) {...} zu WordHistogramSample.java Java Basics - Anfänger-Themen 13
W Equals-Methode überschreiben bei composition Java Basics - Anfänger-Themen 20
V Hilfe bei Implementierung einer boolean Methode Java Basics - Anfänger-Themen 6
T Methode, die prüft ob in einem Int-Array maximal 2 Zahlen enthalten sind, die größer als ihr Vorgänger sind Java Basics - Anfänger-Themen 5
V Methoden printChar Methode mit Rückgabetyp void Java Basics - Anfänger-Themen 26
F Graph Tiefensuche Methode Java Basics - Anfänger-Themen 7
Jambolo Methode, welche die 3 letzten Parameter Werte speichert Java Basics - Anfänger-Themen 20
berserkerdq2 wie funktioniert contenthandler, was muss ich bei der Methode startElement und endElement tun? Java Basics - Anfänger-Themen 11
M Warum return die Methode den Wert nicht Java Basics - Anfänger-Themen 5
berserkerdq2 Wann soll ich den Stream schließen, wenn ich das in einer Methode habe? Java Basics - Anfänger-Themen 8
berserkerdq2 Ich gebe eine ArrayList als List zurück per MEthode, wie kann ich nun aber die ArrayList speichern? Java Basics - Anfänger-Themen 46
S Methode Java Basics - Anfänger-Themen 4
M Eine Methode die erkennt ob die ein gegebene zahl größer oder kleiner sein muss Java Basics - Anfänger-Themen 2
U Methode wird genutzt, ohne dass ich die aufrufe? Java Basics - Anfänger-Themen 4
F nach Methode Programm nicht beenden Java Basics - Anfänger-Themen 9
Liroyd Methode mit Objektvariabel rechnen? Java Basics - Anfänger-Themen 6
H Mit setter-Methode JLabel in einer andern Klasse ändern. Java Basics - Anfänger-Themen 40
D Methode um mögliche Rezepte auszugeben Java Basics - Anfänger-Themen 12
U Warum kann ich die Methode in der ENUM Klasse nicht aufrufen? Und warum geht die Switch nicht? Java Basics - Anfänger-Themen 8
J Hallo zusammen , was macht diese Methode hier genau? Java Basics - Anfänger-Themen 3
D Array in Main Methode aus anderer Klasse aufrufen Java Basics - Anfänger-Themen 3
H Eine Methode über Actionlistener beenden Java Basics - Anfänger-Themen 8
G jButton führt Main Methode nicht richtig aus Java Basics - Anfänger-Themen 3
G Main Methode wird beim ersten Aufruf nicht richtig ausgeführt Java Basics - Anfänger-Themen 1
C60 Methoden Main-Methode erkennt meine Arrays nicht. Java Basics - Anfänger-Themen 7
A Ein Array bearbeiten und in einer anderen Methode nutzen Java Basics - Anfänger-Themen 6
A Ergebnis einer Methode bei einer anderen verwenden Java Basics - Anfänger-Themen 13
L Iteratorform und Methode mit variabler Parameterzahl Java Basics - Anfänger-Themen 31
F Methode ArrayList mit Eingabewert Java Basics - Anfänger-Themen 2
M Wie kann eine Methode für ein vorhandenes "Array von char" einen Index-Wert zurückliefern? Java Basics - Anfänger-Themen 3
M Wie kann die Implementation einer Methode den Wert eines Attributs vermindern? Java Basics - Anfänger-Themen 3
Csircc Rekursive Methode Stack Overflow Java Basics - Anfänger-Themen 10
M Wie kann eine Methode (string) eine andere Methode (void) mit zufälligen int-Werten aufrufen? Java Basics - Anfänger-Themen 4
M Wie verknüpfe ich eine Bedingung mit einer Methode ohne if-Verzweigung & Bedingungsoperator? Java Basics - Anfänger-Themen 2
M Wie kann eine Methode eine andere Methode um Werte wie z.B. 1 erhöhen? Java Basics - Anfänger-Themen 6
schredder Strings und reguläre Ausdrücke - Methode mit return string.matches Java Basics - Anfänger-Themen 5
D mehrere Berechnungen in einer Methode Java Basics - Anfänger-Themen 9
H String Repräsentation eines Rechtecks mit Instanz-Methode Java Basics - Anfänger-Themen 8
M Wie kann ich eine Methode aus einem Interface in eine Klasse implementieren, so dass sie ihre Funktion ausführt? Java Basics - Anfänger-Themen 7
J ArrayList add methode selbst programmieren Java Basics - Anfänger-Themen 10
X Methoden Methode zur Punktezählung in Blackjack Java Basics - Anfänger-Themen 2
W Methode ändern Java Basics - Anfänger-Themen 65
M Wie kann ich in einem Konstruktor die Methode eines anderen Interfaces mit den jeweiligen Parametern aufrufen? Java Basics - Anfänger-Themen 8
W Methode, die mit einem Datum arbeitet? Java Basics - Anfänger-Themen 22

Ähnliche Java Themen

Neue Themen


Oben