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

質問編集履歴

10

ddd

2020/10/02 15:28

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -144,8 +144,8 @@
144
144
         if( (右の計算結果) != 0);
145
145
  // 10からその値を引く
146
146
  (右の計算結果B) = 10 - (1の位を剰余算);
147
- a / 10 % 10
147
+ // (暗号化計算式1⃣) (暗号化計算式2⃣)
148
- (暗号化した予約受付番号) = (右の計算結果A) + (右の計算結果B);
148
+ (暗号化した予約受付番号) = (1の位を剰余算) + ((右の計算結果A) + (右の計算結果B));
149
149
 
150
150
  3-3 コードのみ
151
151
  ➊  public String test(String inData){

9

dd

2020/10/02 15:28

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -162,7 +162,7 @@
162
162
  if(total != 0){
163
163
  10 - total;
164
164
  }
165
- ➐ int anngoukaYoyakuNo = totalA + totalB;
165
+ ➐ int anngoukaYoyakuNo = lastKeta + (totalA + totalB);
166
166
  return new String(anngoukaYoyakuNo);
167
167
  }
168
168
 

8

ddd

2020/10/02 15:22

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -103,9 +103,8 @@
103
103
           型の変換  //機能として入れていいのか不明
104
104
           代入    //機能として入れていいのか不明
105
105
           条件式(if)
106
+          計算式1 (掛け算した結果の1の位の剰余算)
106
-          計算式 (掛け算、足し算、1の位と10の位の剰余算、引き算)
107
+          計算式 (掛け算、足し算、1の位と10の位の剰余算、引き算)
107
-          計算式2 (掛け算した結果の1の位の剰余算)
108
-
109
108
  3-1、 大きく6項目
110
109
  ➊  ・引数(予約受付番号データ)
111
110
  ➋  ・for(1つづつ予約受付番号データの数字を取り出す)

7

444

2020/10/02 15:05

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -96,7 +96,7 @@
96
96
 
97
97
  2、
98
98
   扱うデータ : 予約受付番号データ
99
-          暗号した予約受付番号データ
99
+          暗号した予約受付番号データ
100
100
           暗号化するための計算ロジックデータ
101
101
 
102
102
   機能    : 繰り返し(for)

6

333

2020/10/02 14:58

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -171,4 +171,5 @@
171
171
  理解と分解のアドバイスの元修正いたしましたが、コードが短くなった気がしましたが、
172
172
  エラーが出てしまい、動作まではいきませんでした。
173
173
  エラー  →  トークンに構文エラーがあります。これらのトークンを削除してください
174
- 理解と分解という点でこちらの流れですが、改善点などアドバイス頂きたいですm(__)m
174
+ 理解と分解という点でこちらの流れですが、改善点などアドバイス頂きたいですm(__)m
175
+ 文が長くなってしまい申し訳ありません。。

5

えええ

2020/10/02 14:53

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -86,4 +86,89 @@
86
86
  ```
87
87
  理解と分解を頂いたアドバイスを元に自分なりに作成してみたのですが、ものすごく長いコードになってしまいました。
88
88
  この理解と分解の仕方は検討ちがいでしょうか?
89
- アドバイス頂けないでしょうか?
89
+ アドバイス頂けないでしょうか?
90
+
91
+ 分解
92
+ 1、
93
+ 予約受付番号を暗号化計算ロジックにより暗号化し、他者からの不正なアクセスや情報漏洩から守るための
94
+ セキュリティ対策をする。
95
+
96
+
97
+ 2、
98
+  扱うデータ : 予約受付番号データ
99
+          暗号した予約受付番号データ
100
+          暗号化するための計算ロジックデータ
101
+
102
+  機能    : 繰り返し(for)
103
+          型の変換  //機能として入れていいのか不明
104
+          代入    //機能として入れていいのか不明
105
+          条件式(if)
106
+          計算式1 (掛け算、足し算、1の位と10の位の剰余算、引き算)
107
+          計算式2 (掛け算した結果の1の位の剰余算)
108
+
109
+ 3-1、 大きく6項目
110
+ ➊  ・引数(予約受付番号データ)
111
+ ➋  ・for(1つづつ予約受付番号データの数字を取り出す)
112
+ ➌  ・(予約受付番号データ)×(暗号化するための計算ロジックデータ)
113
+ ➍  ・掛け算した値の合計を求める
114
+ ➎   (暗号化計算式1⃣)
115
+    ・(掛け算した値の1の位のみ並べる) = (取り出した予約受付番号データ)×(暗号化するための計算ロジックデータ);
116
+ ➏   (暗号化計算式2⃣)
117
+      ・合計した値の1の位を剰余算する
118
+         10引く(1の位を剰余算した値)
119
+         もし0なら0とする
120
+      ・合計した値の10の位を剰余算する
121
+         10引く(10の位を剰余算した値)
122
+         もし0なら0とする
123
+ ➐   ・(暗号化計算式1⃣)と(暗号化計算式2⃣)を結合する
124
+
125
+ 3-2、 6項目の細分化
126
+ ➊  public String method(予約受付番号データ){
127
+    //char配列の箱で受け取る
128
+ char[] (予約受付番号データを入れる箱) = (予約受付番号データ);
129
+ ➋  //(予約受付番号データを入れる箱)から1つづつ数字を取り出す
130
+    for((予約受付番号データを入れる箱)から1つづつ数字を取り出す)
131
+ ➌➍ //(取り出した予約受付番号データ)×(暗号化するための計算ロジックデータ)
132
+    (掛け算した値の合計) = (取り出した予約受付番号データ)×(暗号化するための計算ロジックデータ);
133
+ ➎  //暗号化計算式1⃣  
134
+  (掛け算した値の1の位のみ並べる) = (取り出した予約受付番号データ)×(暗号化するための計算ロジックデータ);
135
+ ➏  //暗号化計算式2⃣ 
136
+    //合計した値の1の位を剰余算する
137
+ (1の位を剰余算) = (掛け算した値の合計) % 10;
138
+       // もし0の場合は0とする
139
+        if( (右の計算結果) != 0);
140
+ // 10からその値を引く
141
+ (右の計算結果A) = 10 - (1の位を剰余算);
142
+    //合計した値の1の位を剰余算する
143
+ (10の位を剰余算) = (掛け算した値の合計) / 10 % 10;
144
+       // もし0の場合は0とする
145
+        if( (右の計算結果) != 0);
146
+ // 10からその値を引く
147
+ (右の計算結果B) = 10 - (1の位を剰余算);
148
+ ➐ a / 10 % 10
149
+ (暗号化した予約受付番号) = (右の計算結果A) + (右の計算結果B);
150
+
151
+ 3-3 コードのみ
152
+ ➊  public String test(String inData){
153
+ int[] mul = { 1, 3, 7, 9, 7, 3, 1, 3, 9, 7, 1 };
154
+ char[] yoyakuNo = inData.toCharArray();
155
+ ➋ for(int i=0; i<yoyakuNo; i++)
156
+ ➌➍ int kaketaTotal= yoyakuNo × mul;
157
+ ➎ int lastKeta = (yoyakuNo × mul) % 10;
158
+ ➏ totalA = kaketaTotal % 10;
159
+ if(total != 0){
160
+ 10 - total;
161
+ }
162
+ totalB = kaketaTotal / 10 % 10;
163
+ if(total != 0){
164
+ 10 - total;
165
+ }
166
+ ➐ int anngoukaYoyakuNo = totalA + totalB;
167
+ return new String(anngoukaYoyakuNo);
168
+ }
169
+
170
+
171
+ 理解と分解のアドバイスの元修正いたしましたが、コードが短くなった気がしましたが、
172
+ エラーが出てしまい、動作まではいきませんでした。
173
+ エラー  →  トークンに構文エラーがあります。これらのトークンを削除してください
174
+ 理解と分解という点でこちらの流れですが、改善点などアドバイス頂きたいですm(__)m

4

33

2020/10/02 14:52

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -84,6 +84,6 @@
84
84
  }
85
85
  }
86
86
  ```
87
- 理解と分解を頂いたアドバイスを元に自分なりに作成してみたのですが、
87
+ 理解と分解を頂いたアドバイスを元に自分なりに作成してみたのですが、ものすごく長いコードになってしまいました。
88
88
  この理解と分解の仕方は検討ちがいでしょうか?
89
89
  アドバイス頂けないでしょうか?

3

2222d

2020/09/30 15:53

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -33,4 +33,57 @@
33
33
                                    十の位はマイナス10する。
34
34
                                    一の位はマイナス10する。
35
35
 
36
- 上記の計算式を実現するにはどうしたらいいか教えて頂きたいです。
36
+ 上記の計算式を実現するにはどうしたらいいか教えて頂きたいです。
37
+
38
+
39
+
40
+ ```Java
41
+ public class test11 {
42
+
43
+ public static void main(String[] args) {
44
+ // TODO 自動生成されたメソッド・スタブ
45
+
46
+ class nouNum {
47
+ //引数で"20092812345"(inData)を受け取る
48
+ public String test(String inData){
49
+ //引数で受け取る変数をchar[]で作成する
50
+ char[] no02 = inData.toCharArray();
51
+ //no02の値の桁を1桁づつ取り出して掛けるための配列の変数を作成する
52
+ int[] mul = { 1, 3, 7, 9, 7, 3, 1, 3, 9, 7, 1 };
53
+ //引数の値の11桁目まで計算するための変数を作成する。
54
+ int n = Math.min(no02.length, 11);
55
+ //引数の値と1文字づつ取得した桁に対して掛けた値の合計値を保持するための変数を作成する
56
+ int total = 0;
57
+ //引数の値を1文字づつ取り出す
58
+ for (int i = 0; i < n; i++)
59
+ //数字を数値に変換して掛けたものを配列に入れる
60
+ total = (char)((no02[i] - '0') * mul[i] + '0');
61
+ //掛けた値の1の位の値を入れる変数の箱を作成する
62
+ char[] no03 = (char)((no02[i]- '0') mul[i] % 10 + '0');
63
+ //合計から10の位を取り出して10からその値を引いた値にする
64
+ int a = total.getNumbericValue(i);
65
+ //10の位を取り出す
66
+ int a01 = a / 10 % 10;
67
+ //ただし10は変換しない
68
+ if(a01 != 0) a01 = 10 -a01;
69
+ //合計から1の位を取り出し10からその値を引いた値にする
70
+ int b = total.getNumbericValue(i);
71
+ //1の位を取り出す
72
+ int b01 = total % 10;
73
+ //ただし0は変換しない
74
+ if(b01 != 0) b01 = 10 -b01;
75
+ //掛けた値の1の位だけ表示した値をint型に変換する
76
+ int c = no03.getNumbericValue(i);
77
+ //returnしたい値の変数の箱を作る
78
+ int Num01 = c + a01 + b01;
79
+
80
+ return String.valueOf(Num01);
81
+ }
82
+ }
83
+
84
+ }
85
+ }
86
+ ```
87
+ 理解と分解を頂いたアドバイスを元に自分なりに作成してみたのですが、
88
+ この理解と分解の仕方は検討ちがいでしょうか?
89
+ アドバイス頂けないでしょうか?

2

ccc

2020/09/30 15:44

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -29,7 +29,7 @@
29
29
  6(2*3), 27(3*9), 28(4*7),5(5*1)
30
30
                                 ↓
31
31
                                2 + 0 + 0 + 81 + 14 + 24 + 1 + 6 + 27 + 28 +5 = 188
32
- 184 → 百の位は無視する。
32
+ 188 → 百の位は無視する。
33
33
                                    十の位はマイナス10する。
34
34
                                    一の位はマイナス10する。
35
35
 

1

dfsd

2020/09/30 04:34

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -31,4 +31,6 @@
31
31
                                2 + 0 + 0 + 81 + 14 + 24 + 1 + 6 + 27 + 28 +5 = 188
32
32
  184 → 百の位は無視する。
33
33
                                    十の位はマイナス10する。
34
-                                   一の位はマイナス10する。
34
+                                   一の位はマイナス10する。
35
+
36
+ 上記の計算式を実現するにはどうしたらいいか教えて頂きたいです。