Java if-Abfrage wird nicht ausgeführt obowhl es eintreffen sollte

JavaBeginner

Ensign
Registriert
Juli 2015
Beiträge
142
Hallo, ich habe ein kleines Problem mit der if-Abfrage:
Code:
			public void onClientJoin(ClientJoinEvent e) {
				List<ServerGroupClient> test = api.getServerGroupClients(13084);
							System.out.println(test);
							if (test.stream().anyMatch(client -> client.getNickname() == e.getClientNickname())) {
							    System.out.println("Richtig!");
							}else{
								System.out.println("Falsch!");
							}
Ich verwende die Ts3-API von TheHolyWaffle. Die Liste sieht folgendermaßen aus:
[{cldbid=41934, client_nickname=Bot, client_unique_identifier=HqyP5/EpQW/FVGNlyKhXZhlt6lE=}, {cldbid=41936, client_nickname=Palori, client_unique_identifier=svwfkCUF90i8NIDrSwzPmGV7pSU=}]
Ich verbinde mich mit dem Namen Palori, jedoch wir immer "Falsch!" ausgegeben.
Ich möchte, das falls bereits eine Person mit dem Namen existiert, eine dementsprechende Nachricht ausgegeben wird und wenn nicht eben nicht.
Hat jemand eine Idee wie ich das Problem lösen kann?


Sorry für die etwas "schräge" Formatierung^^
 
Ersetze
if (test.stream().anyMatch(client -> client.getNickname() == e.getClientNickname()))

mit
if (test.stream().anyMatch(client -> client.getNickname().equals(e.getClientNickname())))


Ich gehe davon aus .getNickame() und getClientNickname liefern beide String und nicht int zurück ;)
 
schau dir das nochmal genauer an
(test.stream().anyMatch(client -> client.getNickname() == e.getClientNickname()))

strings mit equal vergleichen + auch wenn du strings mit == vergleichen hättest können, wär deine klammersetzung falsch gewesen.

bei == wird nur die referenz im speicher verglichen.


obwohl, ganz richtig sieht mir dem seins auch ned aus...
du willst doch deinen eingegebenen namen überprüfen .. also müsstest du das der anyMatch übergeben? und die sollte dann true oder false zurück geben?!

und seit wann wird -> in java verwendet? kenn das nur aus c?!
 
Zuletzt bearbeitet:
Genrell sollte man die Zeile splitten, da ist das Debugging einfacher. Dann eben, wie oben, den Vergleichsoperator dementsprechend anpassen.
 
Mr.Smith schrieb:
und seit wann wird -> in java verwendet? kenn das nur aus c?!

Seit man eben in Java funktional mit Lambdas programmieren kann :D (Und das hat gar nichts mit dem C-Syntax hier zu tun)
 
Ich danke euch für die schnellen Antworten, eure Antworten haben mir weitergeholfen und das PRoblem wurde gelöst(danke ratzeputz). Ebenfalls bedanke ich mich bei allen anderen für ihre Antworten.
 
ah das gute alte lambda kalkül ^^
kenn das aber bissl anders .. werds mir mal anschaun.
 
Ist aber irgendwie alles nur so halb und nichts Ganzes: es fehlen immer noch die Closures, also der Zugriff auf die äußeren Variablen. Und auch die Syntax für die Lambdas wurde bereits mehrmals geändert :D Ich darf gar nicht erst an die Generics von Java denken. Nur compile-time... da bekomm ich jeden Tag Tränen in den Augen im Büro :( Was ich noch empfehlen kann: Multi-Catches. Ab Java7 muss das genutzt werden, denn es macht den Code viel kompakter.

So, genug halb off-topic ;)
 
Kannst ja direkt Ruby lernen, dort wildert Java seine Ideen und setzt sie dennoch nur halbgar um :)
Wer Ruby kann, der kann auch Java 10 ;)
 
Ruby? Nein, danke. Lieber JavaScript, die Sprache erlebt in letzter Zeit eine tolle Renaissance. Kann ich nur empfehlen, das zu lernen. Letztes Jahr in der Firma haben wir ein Projekt durchgezogen, wo wir einen Kollegen im Team hatten, der mal so richtig funktional denken und programmieren konnte. Da viel Logik auch im Client lief, war das fantastisch mit ihm zu programmieren. Das Backend demgegenüber war klassisch in Enterprise-Java implementiert mit einer REST-Schnittstelle.
 
Eigentlich läuft Ruby+Rails Javascript + PHP so langsam das Wasser ab...

JS ist die schlechteste Skriptsprache überhaupt. Völlig vermurkste Syntax, an jeder Ecke Fallen die nur Fallen sind weil die Logik dahinter absoluter Murks ist. Z.b. bei Hashes, iteriert man diese, bekommt man den Key und nicht den Value wie erwartet. Man muss also den Hash den man iteriert noch mal innerhalb der Schleife mit dem Key aufrufen um an den eigentlichen Value zu kommen. JS ist voll von solchen hirnverbrannten Dingen ^^

Selbst Google nutzt daher CoffeeScript, sozusagen ein JS Aufsatz mit gescheiter Syntax.
Ist nur eine Frage der Zeit bis es wie Flash endet ;)
 
Zuletzt bearbeitet von einem Moderator:
Zurück
Oben