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

回答編集履歴

1

改訂

2018/09/28 15:15

投稿

papinianus
papinianus

スコア12705

answer CHANGED
@@ -144,4 +144,92 @@
144
144
  }
145
145
  }
146
146
 
147
+ ```
148
+
149
+ ---追記
150
+ やろうとしていることはオーバーロードってより、ジェネリクスで実現したほうがいいように思います(学習ってことを考えると継承でもいいのかも?どっちにしてもオーバーロードだと課題にあってない気がする)。随所にisInt(旧integre)が出てくるのがその原因。そのせいで、インデントが多すぎる、良くないコードになってしまっている。
151
+ とりあえず着想をかえない範囲で修正しました。
152
+ intかどうかの質問を前にだし、変数を減らして、数のチェックをやって、変数名を整えました。
153
+ 今の学習段階でもこれくらいになるといいのかなと思います。
154
+ ```csharp
155
+ using System;
156
+
157
+ namespace ConsoleApp3
158
+ {
159
+ internal class Overload
160
+ {
161
+ private readonly double ans;
162
+ public void Show() => Console.WriteLine($"ans = {ans}");
163
+
164
+ public Overload(int x, int y) => ans = x + y;
165
+
166
+ public Overload(double x, double y) => ans = x + y;
167
+ }
168
+
169
+ class Start
170
+ {
171
+ public static void Main()
172
+ {
173
+ var isInt = false;
174
+ var isDouble = false;
175
+ var intArray = new int[2];
176
+ var doubleArray = new double[2];
177
+ var x = 0;
178
+ var xd = 0.0;
179
+
180
+ while (!isInt && !isDouble)
181
+ {
182
+ Console.WriteLine("int or double ?(1 or 2)");
183
+ var select = Console.ReadLine();
184
+
185
+ switch (select)
186
+ {
187
+ case "1":
188
+ Console.WriteLine("You selected 1");
189
+ isInt = true;
190
+ break;
191
+
192
+ case "2":
193
+ Console.WriteLine("You selected 2");
194
+ isDouble = true;
195
+ break;
196
+
197
+ default:
198
+ Console.WriteLine("Incorrect input");
199
+ break;
200
+ }
201
+ }
202
+
203
+ for (var i = 0; i < 2; i++)
204
+ {
205
+ Console.WriteLine("Please enter the digit");
206
+ var numStr = Console.ReadLine();
207
+
208
+ if (isInt ? !int.TryParse(numStr, out x) : !double.TryParse(numStr, out xd))
209
+ {
210
+ Console.WriteLine("Incorrect input");
211
+ i--;
212
+ continue;
213
+ }
214
+ if (isInt)
215
+ {
216
+ intArray[i] = x;
217
+ }
218
+ if (isDouble)
219
+ {
220
+ doubleArray[i] = xd;
221
+ }
222
+ }
223
+ if (isInt)
224
+ {
225
+ new Overload(intArray[0], intArray[1]).Show();
226
+ }
227
+ if (isDouble)
228
+ {
229
+ new Overload(doubleArray[0], doubleArray[1]).Show();
230
+ }
231
+ Console.ReadKey();
232
+ }
233
+ }
234
+ }
147
235
  ```