これは、文字列を整数に変換するのに対して、電話機キーパッドを模倣するプログラムを書く必要がありました。abc(2)、def(3)、ghi(4)、jkl 5)、mno(6)、 pqrs(7)、tuv(8)、wxyz(9)。出力には数字の間にハイフン( - )を付ける必要があります。出力の各整数の間のハイフン
例入力:Alabama
出力:2-5-2-2-2-6-2
しかし、私はちょうど出力のみ2522262
。これを正しくフォーマットするにはどうすればいいですか?だから、
return result.substring(0, result.length() - 1);
:あなたが最後にハイフンを取り除きする必要があります戻る前に、次に
result += getNumber(Character.toUpperCase(s.charAt(i)));
result += "-";
:あなたは結果を構築し、ハイフンを追加する場所に
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;
}
}
}
Java 8を使用している場合、この質問にはすでに回答[String.join](http://stackoverflow.com/questions/1978933/a-quick-and-easy-way-to-join-array-elements)があります。 -with-a-separator-the-sp-of-sp) –
@ÉricRobergeこれは良いです。最後の文字などを削除することなく1行で処理できます。 –