Jestem całkiem nowy w Javie, więc zastanawiam się, jak przekonwertować literę w ciągu na liczbę np. hello world
byłby wyświetlany jako 8 5 12 12 15 23 15 18 12 4
.
tak a=1
, b=2
, z=26
itpJava - jak konwertować litery w ciągu na liczbę?
Odpowiedz
Ponieważ jest to najprawdopodobniej zadanie uczenia , Dam ci wskazówkę: wszystkie punkty kodowe UNICODE dla liter alfabetu łacińskiego są uporządkowane alfabetycznie. Jeśli kod a
to pewna liczba , to kod b
to N+1
, kod c
to N+2
, i tak dalej; kod Z
to N+26
.
Można odjąć punkty kodu znaku w ten sam sposób, w jaki odejmuje się liczby całkowite. Ponieważ punkty kodowe alfabetycznie następujące obliczenie
char ch = 'h';
int pos = ch - 'a' + 1;
wytwarza liczbę sekwencji h
, tj 8
. Jeśli wykonasz to obliczenie w pętli, uzyskasz wynik, którego potrzebujesz.
Należy zauważyć, że powyższy wzór działa tylko ze znakami tego samego rejestru. Jeśli twój łańcuch wejściowy jest w mieszanym przypadku, przed wykonaniem obliczeń musisz przekonwertować każdy znak na małe litery, w przeciwnym razie wystąpiłby błąd.
+1 za bycie jedyną odpowiedzią na próbę nauczania zamiast podawania kodu. – 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);
nie zajmować miejsca itp
można zrobić coś takiego:
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 a Mapa z kluczem będącym znakiem i wartością będącą liczbą całkowitą. Nie jest to skuteczny sposób - mapa powinna być statycznym członkiem klasy.
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 w celu uzyskania szczegółowego wyjaśnienia. BDW to pytanie zostało mi zadane w wywiadzie, na które odpowiedziałem przy użyciu tego samego podejścia. :) – amod
Nie rozumiem, dlaczego zrobiłbyś to w ten sposób. "To nie jest skuteczny sposób" = istnieje lepszy sposób - co to jest? – Menasheh
Jest to łatwy do zrozumienia sposób. Jeśli nie jest używany bardzo często, wydajność nie ma znaczenia. Celem nr 1 jest poprawienie, Cel nr 2 jest łatwy do zrozumienia/utrzymania, celem nr 3 jest szybkie działanie. Jeśli masz inne cele, prawdopodobnie zostaną wstawione między # 2 i # 3. Prędkość nie jest na ogół tak ważna, ponieważ możesz dowiedzieć się, gdzie twój kod jest wolny, a następnie zdecydować, jak najlepiej go przyspieszyć. – TofuBeer
dla każdego znaku w pozycji i: wyjście s.charAt (i) - "a" + 1. s jest ciągiem.
- 1. Jak konwertować liczbę znaków na znaki ASCII?
- 2. Nie można konwertować ciągu znaków na JsonArray
- 3. Konwertowanie ciągu na liczbę całkowitą na schemacie
- 4. Jak konwertować tablicę bajtów na hexString w języku Java?
- 5. Zamień dwie litery w ciągu znaków
- 6. jak uzyskać liczbę "#" w ciągu znaków?
- 7. Jak policzyć liczbę słów w ciągu?
- 8. Jak znaleźć liczbę słów w ciągu?
- 9. Jak zamienić każdą liczbę w ciągu znaków na inny numer?
- 10. Jak konwertować strumień Java do strumienia Scala
- 11. jak konwertować strumień wejściowy do obiektu java
- 12. PHP: Konwertuj wielkie litery na wielkie litery na małe litery
- 13. Jak mogę uzyskać pierwsze trzy litery ciągu w JQuery?
- 14. Dlaczego TypeScript pozwala konwertować z ciągu na numer bez ostrzeżenia
- 15. Jak przekonwertować wielkie litery na małe litery w Notatniku ++
- 16. konwertować DateString Java aktualne javascript
- 17. jak konwertować obiekt na ciąg w php
- 18. Dodaj unikalne litery danego ciągu do listy
- 19. Jak konwertować FileTime na ciąg z DateFormat
- 20. skrypt MySQL konwertować nazwy kolumn na małe
- 21. Ogranicz liczbę zdań w ciągu znaków
- 22. Jak przekonwertować duży ciąg na liczbę całkowitą w java?
- 23. Jak liczyć liczbę bajtek wykonanych w java
- 24. Regex, aby dopasować cztery powtarzające się litery w ciągu używając wzorca Java
- 25. Policzyć liczbę wystąpień ciągu w polu VARCHAR?
- 26. Get pozycji pierwszej litery w ciągu znaków za pomocą php
- 27. Jak znaleźć jedną liczbę w ciągu znaków w Pythonie?
- 28. Jak podzielić słowa na litery w Pythonie
- 29. Java: Konwertuj bajt na liczbę całkowitą
- 30. Java analizować liczbę w notacji wykładniczej
OP chce zmapować każdą literę do swojej pozycji w alfabecie. Tak to rozumiałem. – Booyaches