[解決済み] アルファベットの電話番号を数字だけに変換する機能
2022-02-17 04:28:25
質問
Javaでプログラムを書いているのですが、ユーザーから電話番号を数字で受け取る必要があります。555-GET-FOOD」と入力し、「555-438-3663」という数字をすべて表示する必要があります。
私のプログラムは1つの数字を表示するだけで、すべての数字を表示しないので、いくつかの問題にぶつかりました。また、ユーザーが入力の一部としてダッシュを入力できるようにするには、どうすればよいでしょうか。555-GET-FOOD "のように。
今まではこんな感じでした。
import java.util.*;
public class NumberTranslator {
public static void main(String[] args) {
// Create Scanner for user input
Scanner input = new Scanner(System.in);
// Ask the user to enter the phone number
System.out.println("Please enter the Phone number in this format: (555-XXX-XXXX) ");
// Save the phone number into a string
String phoneNumber = input.nextLine();
//phoneNumber = phoneNumber.substring(0, 3) + "-" + phoneNumber.substring(3,6)+"-"+phoneNumber.substring(6,10)+"-";
phoneNumber = phoneNumber.toUpperCase();
long phoneNumberTranslated = fullPhoneNumber(phoneNumber);
System.out.println(phoneNumberTranslated);
}
public static long fullPhoneNumber(String phoneNumber) {
long number = 0;
int strLength = phoneNumber.length();
for(int i = 0; i < strLength; i++) {
char letter = phoneNumber.charAt(i);
if(Character.isLetter(letter)) {
switch(letter) {
case 'A' : case 'B' : case 'C' : number = 2; break;
case 'D' : case 'E' : case 'F' : number = 3; break;
case 'G' : case 'H' : case 'I' : number = 4; break;
case 'J' : case 'K' : case 'L' : number = 5; break;
case 'M' : case 'N' : case 'O' : number = 6; break;
case 'P' : case 'Q' : case 'R' : case 'S' : number = 7; break;
case 'T' : case 'U' : case 'V' : number = 8; break;
case 'W' : case 'X' : case 'Y' : case 'Z' : number = 9; break;
}
}
else if(Character.isDigit(letter)) {
Character.getNumericValue(letter);
}
else {
System.out.println("Invalid character!");
}
}
return number;
}
}
出力は以下の通りです。
電話番号はこのような形式で入力してください。(555-XXX-XXXX)
555getfood
3
解決方法は?
コードを更新して動作するようにしましょう。
public static longfullPhoneNumber(String phoneNumber)
に変更します。
public static String fullPhoneNumber(String phoneNumber)
を追加し、この関数の中で
result
という変数があります。
StringBuilder result = new StringBuilder();
を更新してください。
else if
ステートメントを使用します。
else if (Character.isDigit(letter)) {
number = Character.getNumericValue(letter);
}
からの変換を行いました。
Char
から
int
が、その結果を保存していませんでした。
そして、末尾にある
for
のループで、結果を収集します。
result.append(String.valueOf(number));
というわけで、最終的には以下のようなコードになります。
public class NumberTranslator {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
// Ask the user to enter the phone number
System.out.println("Please enter the Phone number in this format: (555-XXX-XXXX) ");
// Save the phone number into a string
String phoneNumber = input.nextLine();
// phoneNumber = phoneNumber.substring(0, 3) + "-" +
// phoneNumber.substring(3,6)+"-"+phoneNumber.substring(6,10)+"-";
phoneNumber = phoneNumber.toUpperCase();
String phoneNumberTranslated = fullPhoneNumber(phoneNumber);
System.out.println(phoneNumberTranslated);
}
public static String fullPhoneNumber(String phoneNumber) {
StringBuilder result = new StringBuilder();
long number = 0;
int strLength = phoneNumber.length();
for (int i = 0; i < strLength; i++) {
char letter = phoneNumber.charAt(i);
if (Character.isLetter(letter)) {
switch (letter) {
case 'A': case 'B': case 'C': number = 2; break;
case 'D': case 'E': case 'F': number = 3; break;
case 'G': case 'H': case 'I': number = 4; break;
case 'J': case 'K': case 'L': number = 5; break;
case 'M': case 'N': case 'O': number = 6; break;
case 'P': case 'Q': case 'R': case 'S': number = 7; break;
case 'T': case 'U': case 'V': number = 8; break;
case 'W': case 'X': case 'Y': case 'Z': number = 9; break;
}
}
else if (Character.isDigit(letter)) {
number = Character.getNumericValue(letter);
} else {
System.out.println("Invalid character!");
}
result.append(String.valueOf(number));
}
return result.toString();
}
}
関連
-
[解決済み】エラー:配列または java.lang.Iterable のインスタンスに対してのみ反復処理を行うことができます。
-
[解決済み】スレッド「main」での例外 java.lang.StringIndexOutOfBoundsException: 文字列のインデックスが範囲外です。0 [閉店]
-
[解決済み】HTTPステータス500 サーブレットクラスのインスタンス化エラー [重複]。
-
[解決済み] hibernate のプロパティが見つかりません。
-
[解決済み] エラー - trustAnchors パラメータは空であってはなりません。
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] Javaでバイトサイズを人間が読める形式に変換するにはどうしたらいいですか?
-
[解決済み] Java Stringをbyte[]に変換する方法は?
-
[解決済み] LongをIntegerに変換する
-
[解決済み】java.time.LocalDate を java.util.Date 型に変換する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Javaパッケージが存在しないエラー
-
[解決済み】Android Studio クラス org.codehaus.groovy.runtime.InvokerHelper を初期化できませんでした。
-
[解決済み】StringUtils.isBlank() vs String.isEmpty()
-
[解決済み】 java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver [重複]。
-
[解決済み】 JAVA 変数宣言はここではできない
-
[解決済み】なぜjava.io.Fileにはcloseメソッドがないのでしょうか?
-
[解決済み】破損したjarファイル
-
[解決済み】スレッド "main "での例外 java.util.NoSuchElementException
-
[解決済み】Javaのswitch文。定数式が必要だが、定数である
-
[解決済み】接続Java - MySQL : 公開鍵の取得は許可されていません。