Menu
Coddy logo textTech

まとめ - 安全な除算

CoddyのDartジャーニー「論理とフロー」セクションの一部 — レッスン 43/65。

challenge icon

チャレンジ

簡単

例外処理を使用して安全な除算計算機を実装するプログラムを作成してください。プログラムは、ゼロ除算エラーを適切に処理し、エラーが発生したときにユーザーに明確なフィードバックを提供する必要があります。

  1. 最初の数値(被除数)を表す文字列入力を読み取ります
  2. 2番目の数値(除数)を表す文字列入力を読み取ります
  3. 2つの double 型のパラメータを受け取り、double 型の結果を返す safeDivision という関数を作成します
  4. 関数内では、try-catch ブロックを使用して潜在的な除算エラーを処理する必要があります:
    • try ブロック内:除数がゼロであるかを確認し、もしそうであれば "Division by zero is not allowed" というメッセージとともに例外をスローします。そうでなければ除算を実行します
    • catch ブロック内:例外を処理し、安全なデフォルト値として 0.0 を返します
  5. double.parse() を使用して、入力文字列を double 値に変換します
  6. 変換された値を使用して safeDivision 関数を呼び出します
  7. 以下の正確な形式で結果を表示します

例えば、入力が "10.0""2.0" の場合、プログラムは次のように出力する必要があります:

Safe Division Calculator
========================
First number: 10.0
Second number: 2.0
Performing division...
Result: 5.0
Operation completed successfully

入力が "15.0""0.0" の場合、プログラムは次のように出力する必要があります:

Safe Division Calculator
========================
First number: 15.0
Second number: 0.0
Performing division...
Error: Division by zero is not allowed
Using safe default value: 0.0
Operation completed with error handling

入力が "7.5""2.5" の場合、プログラムは次のように出力する必要があります:

Safe Division Calculator
========================
First number: 7.5
Second number: 2.5
Performing division...
Result: 3.0
Operation completed successfully

プログラムは、try-catch ブロックを使用してゼロ除算を処理する safeDivision 関数を実装する必要があります。try ブロックでは、除数が 0.0 に等しいかどうかを確認し、等しい場合は throw キーワードを使用して手動で例外を発生させます。catch ブロックでは、エラーメッセージを出力し、安全なフォールバック値として 0.0 を返します。メインプログラムはこの関数を呼び出し、エラーが発生したかどうかに基づいて異なる完了メッセージを表示する必要があります。

自分で試してみよう

import 'dart:io';

// TODO: ここにsafeDivision関数を作成してください

void main() {
  // 入力を読み込む
  String? firstInput = stdin.readLineSync();
  String? secondInput = stdin.readLineSync();
  
  // 文字列をdouble型に変換する
  double firstNumber = double.parse(firstInput!);
  double secondNumber = double.parse(secondInput!);
  
  // ヘッダーを表示する
  print("Safe Division Calculator");
  print("========================");
  print("First number: $firstNumber");
  print("Second number: $secondNumber");
  print("Performing division...");
  
  // TODO: safeDivision関数を呼び出し、結果を処理してください
  // エラーが発生したかどうかを確認し、適切な完了メッセージを表示することを忘れないでください
  
}

論理とフローのすべてのレッスン