回答編集履歴

1

改訂

2018/09/28 15:15

投稿

papinianus
papinianus

スコア12705

test CHANGED
@@ -291,3 +291,179 @@
291
291
 
292
292
 
293
293
  ```
294
+
295
+
296
+
297
+ ---追記
298
+
299
+ やろうとしていることはオーバーロードってより、ジェネリクスで実現したほうがいいように思います(学習ってことを考えると継承でもいいのかも?どっちにしてもオーバーロードだと課題にあってない気がする)。随所にisInt(旧integre)が出てくるのがその原因。そのせいで、インデントが多すぎる、良くないコードになってしまっている。
300
+
301
+ とりあえず着想をかえない範囲で修正しました。
302
+
303
+ intかどうかの質問を前にだし、変数を減らして、数のチェックをやって、変数名を整えました。
304
+
305
+ 今の学習段階でもこれくらいになるといいのかなと思います。
306
+
307
+ ```csharp
308
+
309
+ using System;
310
+
311
+
312
+
313
+ namespace ConsoleApp3
314
+
315
+ {
316
+
317
+ internal class Overload
318
+
319
+ {
320
+
321
+ private readonly double ans;
322
+
323
+ public void Show() => Console.WriteLine($"ans = {ans}");
324
+
325
+
326
+
327
+ public Overload(int x, int y) => ans = x + y;
328
+
329
+
330
+
331
+ public Overload(double x, double y) => ans = x + y;
332
+
333
+ }
334
+
335
+
336
+
337
+ class Start
338
+
339
+ {
340
+
341
+ public static void Main()
342
+
343
+ {
344
+
345
+ var isInt = false;
346
+
347
+ var isDouble = false;
348
+
349
+ var intArray = new int[2];
350
+
351
+ var doubleArray = new double[2];
352
+
353
+ var x = 0;
354
+
355
+ var xd = 0.0;
356
+
357
+
358
+
359
+ while (!isInt && !isDouble)
360
+
361
+ {
362
+
363
+ Console.WriteLine("int or double ?(1 or 2)");
364
+
365
+ var select = Console.ReadLine();
366
+
367
+
368
+
369
+ switch (select)
370
+
371
+ {
372
+
373
+ case "1":
374
+
375
+ Console.WriteLine("You selected 1");
376
+
377
+ isInt = true;
378
+
379
+ break;
380
+
381
+
382
+
383
+ case "2":
384
+
385
+ Console.WriteLine("You selected 2");
386
+
387
+ isDouble = true;
388
+
389
+ break;
390
+
391
+
392
+
393
+ default:
394
+
395
+ Console.WriteLine("Incorrect input");
396
+
397
+ break;
398
+
399
+ }
400
+
401
+ }
402
+
403
+
404
+
405
+ for (var i = 0; i < 2; i++)
406
+
407
+ {
408
+
409
+ Console.WriteLine("Please enter the digit");
410
+
411
+ var numStr = Console.ReadLine();
412
+
413
+
414
+
415
+ if (isInt ? !int.TryParse(numStr, out x) : !double.TryParse(numStr, out xd))
416
+
417
+ {
418
+
419
+ Console.WriteLine("Incorrect input");
420
+
421
+ i--;
422
+
423
+ continue;
424
+
425
+ }
426
+
427
+ if (isInt)
428
+
429
+ {
430
+
431
+ intArray[i] = x;
432
+
433
+ }
434
+
435
+ if (isDouble)
436
+
437
+ {
438
+
439
+ doubleArray[i] = xd;
440
+
441
+ }
442
+
443
+ }
444
+
445
+ if (isInt)
446
+
447
+ {
448
+
449
+ new Overload(intArray[0], intArray[1]).Show();
450
+
451
+ }
452
+
453
+ if (isDouble)
454
+
455
+ {
456
+
457
+ new Overload(doubleArray[0], doubleArray[1]).Show();
458
+
459
+ }
460
+
461
+ Console.ReadKey();
462
+
463
+ }
464
+
465
+ }
466
+
467
+ }
468
+
469
+ ```