Ich möchte die Buchstaben A zu Punkt 1 ändern und so der Buchstabe Z zu Nummer 26, dann wieder zu Nummer 27 Buchstaben AA, AB zu 28 geändert werden. Wie soll ich? Muss ich den "Schalter" benutzen? Ich benutze Java-Programm.Konvertieren von Buchstaben in Ziffern
Antwort
Hat dies nicht testen, aber etwas in dieser Richtung sollte funktionieren:
public String numberToCharacterRepresentation(int number) {
char[] ls = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();
String r = "";
while(true) {
r = ls[number % 26] + r;
if(number < 26) {
break;
}
number /= 26;
}
return r;
}
der Rückseite:
public int stringToNumber(String str) {
char[] ls = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();
Map<Character, Integer> m = new HashMap<Character, Integer>();
int j = 0;
for(char c: ls) {
m.put(c, j++);
}
int i = 0;
int mul = 1;
for(char c: new StringBuffer(str).reverse().toString().toCharArray()) {
i += m.get(c) * mul;
mul *= ls.length;
}
return i;
}
Wow danke: D. Aber wie konvertiert man einen nächsten Buchstaben Beispiel AA = 27, AB = 28, AC = 29, AD = 30? – Leostrada
Wie mache ich einen Snapshot so? – Leostrada
@ Jonathon Danke für die netten Bearbeitungen! @Leostrada stringToNumber sollte Ihnen das Gegenteil mitteilen. Sie sollten über Zahlenbasis-Conversions lesen, da dies im Grunde eine Konvertierung von Base-26 zu Base-10 ist. Hier ist ein Beispiel Link: http://www.cut-the-knot.org/recurrence/conversion.shtml –
Wie wäre es mit c-'A '+ 1 den Brief in c umwandeln zu der Nummer, die Sie wollen? Die Berechnung des nächsten Platzes wäre der gleiche wie der von 27. Im Grunde konvertieren Sie eine Basis-26-Nummer in einen Dezimalwert, außer dass Sie keine Null haben.
c-A '+ 1 bedeutet, wenn ich AA schreibe dann wird in 27 konvertieren? – Leostrada
Dies wird die Aufgabe erledigen.
public String map(int i) {
String res = "";
if (i <= 0) {
throw new IllegalArgumentException("Can only map +ve numbers");
}
while (i > 0) {
res = Character.toString('A' + ((i - 1) % 26)) + res;
i = i/26;
}
return res;
}
Eine kompliziertere Version eineine StringBuilder
mit einem effizient wäre, aber dies ist leichter zu verstehen.
Wie mache ich einen Snapshot so? – Leostrada
@Leostrada - Ich verstehe deine Frage nicht. –
Er fragt, wie man Code auf SO formatiert. –
Vielleicht ist der einfachste Weg für A-Z wäre so etwas wie sein:
char c = *whatever letter you need*;
int cAsInt = Integer.toString(c - '@'); // @ is 1 less than A
Für Dinge wie AA, BB usw., wäre es davon ab, wie viele Kombinationen, die Sie benötigen. Das Einrichten eines Mappings kann am schnellsten sein, aber wenn die Möglichkeiten endlos sind, müssen Sie einige Formeln herausfinden.
Verwenden Sie den Objektcharakter 0 => 0 a => 10, usw. Wenn Sie Briefe nur dann 10
Character.forDigit(10,Character.MAX_RADIX) //will return 'a'
Character.getNumericValue('a') // will return 10
Eine einfache Lösung, das Problem zu behandeln, wie Buchstaben anstelle von Ziffern zu schreiben subtrahieren verwenden ist.
public static String asLetters(long num) {
StringBuilder sb = new StringBuilder();
while(num > 0) {
sb.append((char) ('@' + num % 26));
num /= 26;
}
return sb.toString();
}
aus Interesse, was ist die Bedeutung des @? – Toby
''@'' ist ''A' - 1' –
import javax.swing.JOptionPane;
public class TBesar{
public static long x(int a, int b){
if (b==0){
return(1);
}
else{
return(a*(x(a,(b-1))));
}
}
public static long KatakeAngka(String nama){
int A = 0;
int B = 26;
long C = 0;
long Z;
int panjang = nama.length();
char namas[] = new char[panjang];
for (int i=0;i<panjang;i++){
namas[i] = nama.charAt(i);
switch (namas[i]){
case 'a' : A=1;break;
case 'b' : A=2;break;
case 'c' : A=3;break;
case 'd' : A=4;break;
case 'e' : A=5;break;
case 'f' : A=6;break;
case 'g' : A=7;break;
case 'h' : A=8;break;
case 'i' : A=9;break;
case 'j' : A=10;break;
case 'k' : A=11;break;
case 'l' : A=12;break;
case 'm' : A=13;break;
case 'n' : A=14;break;
case 'o' : A=15;break;
case 'p' : A=16;break;
case 'q' : A=17;break;
case 'r' : A=18;break;
case 's' : A=19;break;
case 't' : A=20;break;
case 'u' : A=21;break;
case 'v' : A=22;break;
case 'x' : A=23;break;
case 'w' : A=24;break;
case 'y' : A=25;break;
case 'z' : A=26;break;
}
int D = panjang-(i+1);
Z = (x(B,D))*A;
C = C+Z;
}return(C);
}
public static String hitung(long angka){
String B ;
if(angka<27){
if(angka==1){
B="a";
}else if(angka==2){
B="b";
}else if(angka==3){
B="c";
}else if(angka==4){
B="d";
}else if(angka==5){
B="e";
}else if(angka==6){
B="f";
}else if(angka==7){
B="g";
}else if(angka==8){
B="h";
}else if(angka==9){
B="i";
}else if(angka==10){
B="j";
}else if(angka==11){
B="k";
}else if(angka==12){
B="l";
}else if(angka==13){
B="m";
}else if(angka==14){
B="n";
}else if(angka==15){
B="o";
}else if(angka==16){
B="p";
}else if(angka==17){
B="q";
}else if(angka==18){
B="r";
}else if(angka==19){
B="s";
}else if(angka==20){
B="t";
}else if(angka==21){
B="u";
}else if(angka==22){
B="v";
}else if(angka==23){
B="w";
}else if(angka==24){
B="x";
}else if(angka==25){
B="y";
}else{B="z";}
return(B);
}
else{
return(hitung(angka/26)+hitung(angka%26));
}
}
public static void main (String [] args){
String kata = JOptionPane.showInputDialog(null,"Masukkan Kata ke 1");
String kata2 = JOptionPane.showInputDialog(null, "Masukkan Kata ke 2");
long hasil = KatakeAngka(kata);
long hasil2 = KatakeAngka(kata2);
long total = hasil+hasil2;
String HasilKata = hitung(total);
JOptionPane.showMessageDialog(null,kata+" = "+hasil+"\n"+kata2+" = "+hasil2+"\n"+kata+" + "+kata2+" = "+HasilKata);
}
}
Für die von Ihnen wollen dies für Excel tun:
public String getEquivColumn(int number){
String converted = "";
// Repeatedly divide the number by 26 and convert the
// remainder into the appropriate letter.
while (number >= 0)
{
int remainder = number % 26;
converted = (char)(remainder + 'A') + converted;
number = (number/26) - 1;
}
return converted;
}
Dies wird für A bis ZZ arbeiten:
public static int columnCharToNumber(String str) {
String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
if(str.length() == 1) {
return alphabet.indexOf(str);
}
if(str.length() == 2) {
return (alphabet.indexOf(str.substring(1)) + 26*(1+alphabet.indexOf(str.substring(0,1)))) ;
}
return -1;
}
Hallo Arif, willkommen in SO und danke für Ihre Antwort. Um Ihre Antwort noch nützlicher zu machen, würde es Ihnen etwas ausmachen, sie zu editieren (Link unterhalb der Antwort bearbeiten), um eine Erklärung von _why_ hinzuzufügen, dieser Code löst das Problem? Es wird Menschen helfen, von anderen Situationen zu lernen und sie anzuwenden, anstatt nur das Copy-Paste-Coding zu fördern. Danke noch einmal! –
- 1. Konvertieren von Buchstaben in Zahlen in VBA
- 2. conver Buchstaben in R eingegebenen Ziffern
- 3. Konvertieren hebräischen Buchstaben in Äquivalent
- 4. konvertieren Buchstaben zu Zahlen
- 5. Spezifische Buchstaben und Ziffern in einer Zeichenkette in c Programmierung
- 6. konvertieren numerische Zeichen Buchstaben
- 7. Konvertieren Zahlen Buchstaben
- 8. Konvertieren römische Ziffern zu Zahlen in R
- 9. Zeichenketten in R - Leerzeichen zwischen ausgewählten Buchstaben und Ziffern einfügen
- 10. Zahl in den Buchstaben Javascript konvertieren
- 11. Konvertieren von Buchstaben in alphabetische Position in PHP
- 12. Konvertieren von bestimmten Buchstaben in Kleinbuchstaben in Java
- 13. Konvertieren Sie eine Zahl in Buchstaben
- 14. Konvertieren der Nummer in den Buchstaben
- 15. Perl-Modul zum Konvertieren von Zahlen in Buchstaben-Notation
- 16. Image Manipulation: Konvertieren geprägten Buchstaben zu normalen Buchstaben
- 17. regulären Ausdruck für nicht mehr als 2 wiederholt Buchstaben/Ziffern
- 18. Splitting Ziffern und lateinische Buchstaben aus einem String
- 19. Überprüfen, ob eine Zeichenfolge nur Buchstaben, Ziffern und Unterstriche enthält
- 20. Erforderlich. 30 Zeichen oder weniger. Buchstaben, Ziffern und @ /./+/-/_ nur
- 21. Algorithmus zum Konvertieren von römischen Ziffern mit Javascript
- 22. Zulassen von benutzerdefinierten Buchstaben in der Eingabeüberprüfung?
- 23. Buchstaben basierend auf gegebenen Informationen konvertieren?
- 24. Convert binären Python von Ziffern zur Liste
- 25. C# regex Strings erhalten, die eine bestimmte Folge von Buchstaben und Ziffern haben
- 26. Ersatz Buchstaben mit entsprechenden Satz von Buchstaben
- 27. konvertieren drei Buchstaben Ländercodes zu vollständigen Ländernamen in Excel
- 28. oracle: initCap ohne alle anderen Buchstaben in Kleinbuchstaben zu konvertieren
- 29. Konvertieren ersten Buchstaben der angegebenen Datei in Kleinbuchstaben
- 30. Wie steuern Sie die Formatierung von Ziffern beim Konvertieren von Zahlenlisten in Zeichen?
Zuerst müssen Sie definieren "change" . Dann müssen Sie uns sagen, was Sie versucht haben und was nicht funktioniert. Soll das für eine beliebige Länge funktionieren? – Falmarri
Kannst du mir helfen, Snapshot Java hier einzubauen? – Leostrada
Sie sollten in Betracht ziehen: http://StackOverflow.com/questions/763691/Programming-riddle-how-might-you-translate-an-excel-column-name-to-a-number, da diese Operation das Gegenteil ist . Eigentlich gewählt, um zu schließen - das ist genau die Hälfte des Problems gelöst. –