回答編集履歴

2

parseIntのクラスを修正

2019/08/08 03:48

投稿

uskey512
uskey512

スコア144

test CHANGED
@@ -1,12 +1,12 @@
1
1
  2進数の文字列を入力して、10進数の値として解釈したいだけならば
2
2
 
3
- 読み込んだ文字列をString#parseIntする際に基数を指定して
3
+ 読み込んだ文字列をInteger#parseIntする際に基数を指定して
4
4
 
5
5
  ```java
6
6
 
7
7
  String s = sc.next();
8
8
 
9
- int num = String.parseInt(s, 2);
9
+ int num = Integer.parseInt(s, 2);
10
10
 
11
11
  ```
12
12
 
@@ -22,7 +22,7 @@
22
22
 
23
23
  ## 追記
24
24
 
25
- String#parseIntを利用しない場合
25
+ Integer#parseIntを利用しない場合
26
26
 
27
27
 
28
28
 

1

String.parseIntを使わない場合のコードを記載

2019/08/08 03:48

投稿

uskey512
uskey512

スコア144

test CHANGED
@@ -17,3 +17,65 @@
17
17
  リファレンス的にはこのあたり
18
18
 
19
19
  [https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Integer.html#parseInt-java.lang.String-int-](https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Integer.html#parseInt-java.lang.String-int-)
20
+
21
+
22
+
23
+ ## 追記
24
+
25
+ String#parseIntを利用しない場合
26
+
27
+
28
+
29
+ ```java
30
+
31
+ import java.util.*;
32
+
33
+
34
+
35
+ public class Main {
36
+
37
+
38
+
39
+ static int twoTenBase(String s) {
40
+
41
+ int sum = 0;
42
+
43
+
44
+
45
+ // 文字列(数字)の最上位桁から読み取り、基数を掛けていく
46
+
47
+ for (int i = 0; i < s.length(); ++i) {
48
+
49
+ sum *= 2; // 入力が10進数のときはここを10にする(今回は2)
50
+
51
+ sum += s.charAt(i) - '0';
52
+
53
+ }
54
+
55
+
56
+
57
+ return sum;
58
+
59
+ }
60
+
61
+
62
+
63
+ public static void main(String[] args){
64
+
65
+ Scanner sc = new Scanner(System.in);
66
+
67
+
68
+
69
+ String s = sc.next();
70
+
71
+ int result = twoTenBase(s);
72
+
73
+
74
+
75
+ System.out.println(result);
76
+
77
+ }
78
+
79
+ }
80
+
81
+ ```