Java Funktion schreiben?

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet
public boolean isEqual(String s1, String s2) {
  return s1.equals(s2);
}

Meiner Meinung nach ist die Methode aber völlig unnötig, da man einfach direkt String#equals nutzen könnte.

Woher ich das weiß:Berufserfahrung – Informatiker Applikationsentwicklung
glasair  06.11.2021, 14:37
Objects.equals(s1, s2)

wäre noch zusätzlich nullsicher für s1.

2
mathe999 
Fragesteller
 06.11.2021, 14:38

Danke, hatte ich jetzt auch gerade raus!

0

Schau mal in die Java String-Klasse und überlege dir mal, welche Funktion du da eventuell nutzen könntest.

Woher ich das weiß:Berufserfahrung – Software-Entwicklung (Java Enterprise)

Überlege Dir, wann zwei Strings gleich sind. Dies ist doch der Fall, wenn alle Zeichen in beiden Strings gleich sind, oder? Davor kann mensch noch schauen, ob die beiden Strings überhaupt gleich lang sind, denn nur dann können sie gleich sein.


public static boolean isEqual(String a, String b) {
    if (a.length() != b.length()) return false;
    int l = a.length();
    for (int i = 0; i < l; i++) {
        if (a.charAt(i) != b.charAt(i)) return false;
    }
    return true;
}

Bei Rückfragen gerne kommentieren.

Woher ich das weiß:Hobby
mathe999 
Fragesteller
 06.11.2021, 14:41

Danke dir. Hätte eine Frage zu einer anderen Funktion, kann ich sie dir stellen?

0
mathe999 
Fragesteller
 06.11.2021, 14:43
@malte314

Okay, also hier geht es um eine Funktion predecessor, welche einen int entgegennimmt und den Vorgänger als Ergebnis liefert. Ich habe:
int predecessor (int i) {

return i-1;

}

Eingabe: predecessor(1337,0);

Ausgabe: Error:

| method predecessor in class cannot be applied to given types;

|   required: int

|   found:   int,int

|   reason: actual and formal argument lists differ in length

| predecessor(1337,0);

| ^---------^

Eingabe: predecessor(-2147483648);

Ausgabe: 2147483647

stimmt das?

0
malte314  06.11.2021, 14:47
@mathe999

Im Prinzip ist deine Implementierung richtig, aber es zeigen sich in dem von dir geposteten "log" zweierlei Probleme.

Eingabe: predecessor(1337,0);

Wie der Fehlermedlung zu entnehmen ist, gibt es eine solche Methode nicht. Deine Methode hat die Parameterliste (int) und nicht (int, int) - Du darfst nur eine Zahl übergeben.

Das zweite Problem liegt darin, dass Zahlen in der Informatik üblicherweise begrenzt sind. Der Int in Java ist 32 bit groß, die kleinste Zahl ist also 2^31 und die größte Zahl 2^31-1. Du übergibst beim zweiten Mal genau diese kleinste Zahl. Was soll deine Methode also machen, es gibt doch keinen predecessor. Den Versuch, trotzdem 1 abzuziehen, gibt dann die größte mögliche Zahl, es fängt also einfach "wieder von vorne an".

0
mathe999 
Fragesteller
 06.11.2021, 14:59
@malte314

okay danke, ich sollte halt genau diese Zahlen eingeben, ist es dann richtig von meiner eingabe?

0
mathe999 
Fragesteller
 06.11.2021, 15:01
@malte314

und bei isEqual

Eingabe: isEqual("Howard", new String("Howard"));

Ausgabe: true

Wieso kann man da new String einsetzen und wieso ist es dann true?

0
malte314  06.11.2021, 15:02
@mathe999

In Java ist "foobar" und new String ("foobar") völlig identisch.

Edit: nicht völlig identisch, aber semantisch gleich.

0
mathe999 
Fragesteller
 06.11.2021, 15:13
@malte314

okay, woran liegt das? Und bei predecessor ist das richtig, wenn das die Aufgabe war?

0

If(Wert1.equals("Hallo") && Wert2.equals("Hallo"){

return true;

{

Else

{

return false;

}

Ungefähr so, die Funktion müsste da noch darüber

Also z.B. public void Parameterübergabe(String wert1,wert2)

Ungefähr so, ich habe leider nicht so viel Java erfahrung.

Ich sehe auch gerade dass die anderen Antworten besser aussehen, also ist meins vermutlich völliger quatsch :( ich wollte es nur versuchen xd.

Woher ich das weiß:eigene Erfahrung – Interesse an Computern,Handys.
mathe999 
Fragesteller
 06.11.2021, 14:44

Danke trotzdem! :)

0