質問するログイン新規登録

回答編集履歴

1

数値変換案

2016/01/17 15:41

投稿

swordone
swordone

スコア20675

answer CHANGED
@@ -1,2 +1,40 @@
1
1
  難しいも何も、今の`HextoDex`メソッドに4文字つなげたStringを渡せば実現できるかと思うのですが。
2
- もっとも、変換メソッドはもっと簡略化の余地が有りますが。
2
+ もっとも、変換メソッドはもっと簡略化の余地が有りますが。
3
+
4
+ ---
5
+
6
+ コードをちょっと書いてみました
7
+ パターン1:使う文字を文字列として用意しておく
8
+ ```java
9
+ class Number{
10
+ public static final String num = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
11
+
12
+ private static int toDec(char c){
13
+ int n = num.indeOf(c);
14
+ if(n >= 0) return n;
15
+ //その文字が36進数で使う文字でなかった場合に例外を発生させる
16
+ else throw new IndexOutOfBoundsException(String.valueOf(c));
17
+ }
18
+ public static int HextoDec(String s){
19
+ //ここはそのまま
20
+ }
21
+ }
22
+ ```
23
+
24
+ パターン2:文字コードで判別
25
+ ```java
26
+ class Number{
27
+ private static int toDec(char c){
28
+ if(c >= '0' && c <= '9') return c - '0';
29
+ if(c >= 'A' && c <= 'Z') return 10 + c - 'A';
30
+ //小文字にも対応してみた
31
+ if(c >= 'a' && c <= 'z') return 10 + c - 'a';
32
+ throw new IllegalArgumentException(String.valueOf(c));
33
+ }
34
+ public static int HextoDec(String s){
35
+ //ここはそのまま
36
+ }
37
+ }
38
+
39
+ ```
40
+ 例外はRuntimeException系で適当に選定しました。