Vergleich von 2 strings von ascii-Werte in Java
Habe ich zu schreiben, eine Methode zum vergleichen von strings alphabetisch und eine int
. Ich kann mir nicht alle eingebauten Funktionen und ich soll for
Schleife.
Ich bin unsicher, wie man mit den Zeichenfolgen, die unterschiedliche Längen haben. Im moment mein Hauptproblem ist, dass die code ist nur der Vergleich der ersten Zeichen der jede Zeichenfolge dann wieder das int, aber ich kann nicht return comparison;
außerhalb der for-Schleife
public class poop {
public static int Compare(String s1, String s2) {
for (int i = 0; i < s1.length() && i < s2.length(); i++) {
int comparison = 0;
int ascii1 = 0;
int ascii2 = 0;
//convert chars into their ascii values
ascii1 = (int) s1.charAt(i);
ascii2 = (int) s2.charAt(i);
//treat capital letters as lower case
if (ascii1 <= 95) {
ascii1 += 32;
} if (ascii2 <= 95) {
ascii1 += 32;
}
if (ascii1 > ascii2) {
comparison = 1;
} else if (ascii1 < ascii2) {
comparison = -1;
} else {
comparison = 0;
}
}
return comparison;
}
public static void main(String[] args) {
String s1 = "aba";
String s2 = "aaa";
System.out.println(Compare(s1,s2));
}
}
"ich kann nicht return Vergleich; außerhalb der for-Schleife"... warum nicht?
Befasst sich mit dem Vergleich, nur hatte Sie zu definieren, die außerhalb der for-Schleife..
Wenn man eigentlich zum vergleichen von zwei Strings, und Sie können nicht alle "built-in" Funktionen, dann sind Sie abgespritzt. Sie zumindest würde
break
es in der if-Anweisung, und Sie könnten return comparison
außerhalb der SchleifeBefasst sich mit dem Vergleich, nur hatte Sie zu definieren, die außerhalb der for-Schleife..
Wenn man eigentlich zum vergleichen von zwei Strings, und Sie können nicht alle "built-in" Funktionen, dann sind Sie abgespritzt. Sie zumindest würde
charAt
oder getChars
auf die Daten zugreifen. Und natürlich können Sie nicht verwenden length
um herauszufinden, wie lange der String ist.InformationsquelleAutor DynoDimo | 2014-10-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie vergleichen alphabetisch geordnet, das bedeutet, dass das erste unterschiedliche Zeichen in der Zeichenfolge definiert die Differenz. Zum Beispiel:
aab
geht voraac
wegen derc
.Als für verschiedene Zeichenfolgen der Länge, größere strings gehen nach kleineren strings (ein Wörterbuch verwendet, die Konvention). So
aaaa
geht nachaaa
, weilaaaa
größer ist.So, let ' s get it done:
Hinweise:
toLowerCase()
Methode zum konvertieren des strings in Kleinbuchstaben. Wenn Sie können nicht alle "built-in" - Verfahren verwenden, können Sie Ihre Konvertierung (dasASCII += 32
Stück). Allerdings müssen Sie vorsichtig sein: Sie müssen prüfen, ob das Zeichen Wert ist, eine alphabetische Zeichen vor dem konvertieren Sie wie folgt (Verwenden Sie google zu finden, eine ASCII-Tabelle und überprüfen, welche gültig sind Buchstaben Werte)c1
undc2
ganze zahlen sind, socomparison = c1 - c2
halten wird die Differenz zwischen diesen zahlen (Zeichen).comparison == 0
bedeutet, dass die Zeichen gleich sind, so wird nichts getan. Aber wenncomparison != 0
, die Charaktere sind unterschiedlich, wenncomparison > 0
das bedeutet, dassc1
ist "größer" alsc2
, sos1
größer ist (sehen Sie den ersten Absatz meiner Antwort); ifcomparison < 0
danns2
ist größer.Also, wenn
comparison != 0
, dann können Sie wieder seinen Wert. Denken Sie daran: diereturn
Satz macht zwei Dinge: gibt Es einen Wert und beendet die Funktion. Also die Ausführung derfor
- Schleife wird gestoppt.comparison
noch0
):s1.lenght() > s2.length()
, danns1
ist "größer" alss2
, so dass ein positiver Wert (+1
) zurückgegeben.s1.lenght() < s2.length()
, danns1
ist "kleiner" alss2
, also einen negativen Wert (-1
) zurückgegeben.(a) dass alle die Zeichen der beiden strings sind gleich (weil
comparison == 0
), und(b) dass die Länge der beiden strings gleich sind
also die Saiten sind gleich, und ein null-Wert zurückgegeben werden muss.
Wenn Sie bereits gelöst, der Vergleich Problem, dann nehmen Sie einen Blick auf den letzten Teil von meinem code-Beispiel; das ist der Weg, um mit verschiedenen string-Längen... Lassen Sie mich Bearbeiten Sie den code zum entfernen aller Kommentare
Ich habe einige Erklärungen zu meiner Antwort... Anmerkungen 1 bis 3 befassen sich mit der Mindestlänge der Fall und Anmerkung 4 befasst sich mit der unterschiedlichen Länge Fall (Beispiel:
abc
vsabcabc
)Sie hatten Recht.. ich denke, dein Beispiel ist besser und vollständiger als meins.. 🙂 +1 für eine übersichtliche code
InformationsquelleAutor Barranka