Also musste ich ein Programm schreiben, das eine Telefontastatur nachahmt, während es eine Zeichenkette in ganze Zahlen umwandeln würde: abc (2), def (3), ghi (4), jkl (5), mno (6), pqrs (7), tuv (8), wxyz (9). Nur die Ausgabe muss Bindestriche (-) zwischen den Ziffern haben.Bindestrich zwischen jeder Ganzzahl in der Ausgabe
Beispiel Eingabe: Alabama
Ausgang: 2-5-2-2-2-6-2
Aber ich gerade erst Ausgang 2522262
. Wie würde ich das richtig formatieren?
public class Keypad {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Enter a string: ");
String s = sc.nextLine();
System.out.println(getNumbers(s));
}
public static String getNumbers(String s) {
String result = new String();
for (int i = 0; i < s.length(); i++) {
if (Character.isLetter(s.charAt(i))) {
result += getNumber(Character.toUpperCase(s.charAt(i)));
}
else {
result += s.charAt(i);
}
}
return result;
}
public static int getNumber(char upperCaseLetter) {
int number = ((upperCaseLetter - 'A')/3) + 2;
if (number < 7) {
return number;
}
else if (upperCaseLetter - 'A' < 20) {
return 7;
}
else if (upperCaseLetter - 'A' < 23) {
return 8;
}
else {
return 9;
}
}
}
Wenn Sie Java 8 verwenden, haben diese Frage bereits eine Antwort [String.join] (http://stackoverflow.com/questions/1978933/a-quick-and-easy-way-to-join-array-elements -mit-einem-Trennzeichen-das-Gegenteil-von-sp) –
@ ÉricRoberge das ist ein gutes, kann es in einer Zeile tun, ohne das letzte Zeichen usw. entfernen zu müssen –