Ich bin ziemlich neu in Java, also frage ich mich, wie Sie einen Buchstaben in einer Zeichenfolge in eine Zahl z. hello world
würde als 8 5 12 12 15 23 15 18 12 4
ausgeben.
so a=1
, b=2
, z=26
usw.Java - Wie konvertiert man Buchstaben in einem String in eine Zahl?
Antwort
Da dies höchstwahrscheinlich eine Lernzuordnung Ich gebe Ihnen einen Hinweis: Alle UNICODE-Codepunkte für die Buchstaben des lateinischen Alphabets sind alphabetisch geordnet. Wenn der Code a
eine Nummer N
ist, dann ist der Code b
N+1
, der Code c
ist N+2
, und so weiter; Der Code Z
lautet N+26
.
Sie können Zeichencodepunkte auf die gleiche Weise subtrahieren, wie Sie ganze Zahlen subtrahieren. Da die Codepunkte alphabetisch geordnet sind, wird die folgende Berechnung
char ch = 'h';
int pos = ch - 'a' + 1;
erzeugt die Sequenznummer h
, d.h. 8
. Wenn Sie diese Berechnung in einer Schleife durchführen, erhalten Sie das Ergebnis, das Sie benötigen.
Beachten Sie, dass die obige Formel nur mit Zeichen des gleichen Registers funktioniert. Wenn Ihre Eingabezeichenfolge in Groß- und Kleinschreibung eingegeben wird, müssen Sie vor der Berechnung jedes Zeichen in Kleinbuchstaben umwandeln, andernfalls würde es sich als falsch herausstellen.
+1 für die einzige Antwort zu versuchen, zu lehren, anstatt den Code zu geben. – iamnotmaynard
String s = "hello world";
String t = "";
for (int i = 0; i < s.length(); ++i) {
char ch = s.charAt(i);
if (!t.isEmpty()) {
t += " ";
}
int n = (int)ch - (int)'a' + 1;
t += String.valueOf(n);
}
System.out.println(t);
Dieser nicht mit Platz befasst usw.
Sie können wie etwas tun:
for (int i = 0; i < a.length(); ++i) {
if (a.charAt(i) >= 'a' && a.charAt(i) <= 'z') {
System.out.println((int)a.charAt(i) - (int)'a');
}
}
public static void main(String[] args) {
String s = "hello world";
s = s.replace(" ", "");
char[] c = s.toCharArray();
for (Character ss : c)
System.out.println(ss - 'a' + 1);
}
Usa eine Karte mit dem Schlüssel ist das Zeichen und ein Wert, der die ganzen Zahlen ist. Dies ist kein effizienter Weg - die Karte sollte ein statisches Mitglied der Klasse sein.
import java.util.HashMap;
import java.util.Map;
public class JavaApplication1
{
public static void main(String[] args)
{
final Map<Character, Integer> map;
final String str = "hello world";
map = new HashMap<>();
// or map = new HashMap<Character, Integer> if you are using something before Java 7.
map.put('a', 1);
map.put('b', 2);
map.put('c', 3);
map.put('d', 4);
map.put('e', 5);
map.put('f', 6);
map.put('g', 7);
map.put('h', 8);
map.put('i', 9);
map.put('j', 10);
map.put('k', 11);
map.put('l', 12);
map.put('m', 13);
map.put('n', 14);
map.put('o', 15);
map.put('p', 16);
map.put('q', 17);
map.put('r', 18);
map.put('s', 19);
map.put('t', 20);
map.put('u', 21);
map.put('v', 22);
map.put('w', 23);
map.put('x', 24);
map.put('y', 25);
map.put('z', 26);
for(final char c : str.toCharArray())
{
final Integer val;
val = map.get(c);
if(val == null)
{
// some sort of error
}
else
{
System.out.print(val + " ");
}
}
System.out.println();
}
}
+1 für detaillierte Erklärung. BDW diese Frage wurde mir in dem Interview gestellt, das ich mit dem gleichen Ansatz beantwortete. :) – amod
Ich verstehe nicht, warum Sie es so machen würden. "Das ist kein effizienter Weg" = es gibt einen besseren Weg - was ist das? – Menasheh
Es ist ein leicht verständlicher Weg. Wenn es nicht sehr häufig verwendet wird, spielt die Effizienz keine Rolle. Ziel Nr. 1 ist es richtig zu machen, Ziel Nr. 2 ist einfach zu verstehen/beizubehalten, Ziel Nr. 3 macht es schnell. Wenn Sie andere Ziele haben, werden sie wahrscheinlich zwischen # 2 und # 3 eingefügt. Geschwindigkeit ist im Allgemeinen nicht so wichtig, da Sie herausfinden können, wo Ihr Code langsam ist und dann entscheiden, wie Sie ihn am schnellsten beschleunigen können. – TofuBeer
für jedes Zeichen bei Position i: Ausgabe an CharAt (i) - 'a' + 1. s ist die Zeichenfolge.
- 1. Wie man bestimmte Buchstaben in einem String in Java ausdruckt
- 2. Wie konvertiert man Java String in byte []?
- 3. Wie konvertiert man String in String Array in Java?
- 4. Wie konvertiert man String in String [] in Java?
- 5. Bash: Wie konvertiert man eine Zahl in eine Monatszeichenfolge?
- 6. Wie konvertiert man DateTime in eine Zahl in MySQL?
- 7. Wie konvertiert man Hex-Zahl in Swift?
- 8. JSON-Parser in Java konvertiert automatisch eine Zeichenfolge in eine Zahl/ganze Zahl
- 9. Wie konvertiert man Hex-Zahl in Farbe?
- 10. Wie konvertiert man Vektor in Java in String?
- 11. Wie konvertiert man den DataInputStream in den String in Java?
- 12. Wie konvertiert man String-Typ zu Class-Typ in Java
- 13. Wie konvertiert man einen String in CharSequence?
- 14. Wie konvertiert man eine Zeichenfolge in eine SOAPMessage in Java?
- 15. Wie konvertiert man org.jdom.Document in String
- 16. Wie konvertiert man eine Zahl in ein ASCII-Zeichen?
- 17. Wie konvertiert man eine negative Zahl in ein positives?
- 18. Wie konvertiert man einen tkinter Eintrag in eine ganze Zahl
- 19. Tensorflow: Wie konvertiert man NaNs in eine Zahl?
- 20. Wie konvertiert man einen String in eine ganze Zahl in der Geschwindigkeitsvorlage?
- 21. Wie konvertiert man eine Bereichsuntermenge von Bits in einem C++ - Bitset in eine Zahl?
- 22. Wie konvertiert man String in int C#
- 23. Wie konvertiert man String in Integer?
- 24. Konvertieren Sie eine Zahl in Buchstaben
- 25. Wie konvertiert man Karte in eine Liste in Java 8
- 26. Wie konvertiert man JSON in einen String?
- 27. Wie konvertiert man DateTime in String?
- 28. Wie konvertiert man [] [2] string in [string] string in go?
- 29. Wie konvertiert man komplexe Sammlung in String?
- 30. Wie konvertiert man einen String in JavaScript?
OP möchte jeden Buchstaben auf seine Position im Alphabet abbilden. So habe ich es verstanden. – Booyaches