【サイト内の Java 関連の資料】
このプログラムでは,「0から9(半角数字)以外の文字が含まれているかどうか」を,正規表現を使って確認することを行う.
参考ページ:http://www.macco.co.jp/~ktaimail/pocket/ で公開された記事を参考にしました.
test.com.PBEntryを実行すると、標準入力を受け付けます。 この状態で偶数個(0個は不可)の数字を入力すると、 上記URLの割当表に従って文字列が生成され、標準出力に表示されます。
import java.util.regex.*; /* ポケベル入力方式と仮名の対応をさせるメソッド */ public class PBMap { int ConsonantCode; //子音 int VocalCode; //母音 //ポケベル入力方式の文字マップ String Kana[] = {"あいうえおABCDE", "かきくけこFGHIJ", "さしすせそKLMNO", "たちつてとPQRST", "なにぬねのUVWXY", "はひふへほZ?!−/", "まみむめも¥& ", "や(ゆ)よ*# ", "らりるれろ12345", "わをん゛゜67890" }; // 番号からマップに指定された文字を呼び出すメソッド public char mapping(int CC, int VC){ return Kana[CC].charAt(VC); } // 入力された数字を解釈し、mappingメソッドを使って、文字列を生成するメソッド public StringBuffer checkMap(String EntryNo){ StringBuffer strPB = new StringBuffer(); //文字列の長さが偶数であるか確認 if(EntryNo.length()==0 || EntryNo.length()%2 == 1){ return new StringBuffer("2文字以上で偶数長の文字列を与えて下さい"); } // 数字以外が含まれていないか、正規表現を用いて確認 Pattern pattern = Pattern.compile("[0-9]+"); Matcher matcher = pattern.matcher(EntryNo); if(matcher.matches()==false){//patternにマッチしない return new StringBuffer("数字以外が含まれています"); } // 2つの数字で1つの文字が決定されるので、2文字ずつ処理する for(int i=0;i < EntryNo.length();i=i+2){ //charを数字に変換 int CC = Character.digit(EntryNo.charAt(i),10); int VC = Character.digit(EntryNo.charAt(i+1),10); //配列の添え字と、マップのインデクスとの調整 if(CC==0) CC = 9; else CC--; if(VC==0) VC = 9; else VC--; strPB.append(mapping(CC,VC)); //文字列への追加 } return strPB; } }
import java.io.*; public class PBEntry { public static void main(String[] args) throws Exception { PBMap Map1 = new PBMap(); // 標準入力の準備(クラス作成) BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); System.out.print("入力:"); //入力された1行をStringに String input = new String(in.readLine()); String Output = Map1.checkMap(input).toString(); System.out.println("出力:"+Output); } }
【Windows での実行】
Windows で,ファイル PBMap.java, PBEntry を編集し実行するために,次のコマンドを, コマンドプロンプトで実行する.
cd %LOCALAPPDATA% notepad PBMap.java notepad PBEntry.java javac -encoding UTF-8 PBMap.java javac -encoding UTF-8 PBEntry.java java PBEntry