008-004-009
商品の税込価格を計算するメソッド
初級
問題説明
複数の引数: 関連する値をメソッドに渡す
メソッドが処理を実行するために複数の情報を必要とする場合、複数の引数を受け取ることができます。各引数には特定の型と目的があり、メソッド呼び出し時には順序が重要です。
一緒に複数の引数を使ったメソッドについて学んでいきましょう!
学習ポイント
- 引数の順序: 実引数は仮引数の位置に一致させる
- 型の混合: 異なる型を組み合わせ可能(int, double, String)
- 型キャスト: 必要に応じて型を変換
- 戻り値: メソッドは計算結果を返せる
引数宣言のパターン
| パターン | 例 | 使用場面 |
|---|---|---|
| 同じ型 | (int x, int y) | 座標、寸法 |
| 型の混合 | (int price, double rate) | 精度が必要な計算 |
| オブジェクト + プリミティブ | (String name, int age) | エンティティデータ |
よくある間違い
間違えても大丈夫です。引数の順序と型をもう一度確認してみてください。
間違い1: 引数の順序を間違える
不正な結果:
// メソッドは(price, rate)を期待
calculateTaxPrice(0.1, 1000); // 間違い!税率が先、価格が後正しいコード:
calculateTaxPrice(1000, 0.1); // 価格が先、税率が後間違い2: 整数除算での精度損失
精度が失われる:
int result = price * (1 + taxRate); // コンパイルエラー!
// 明示的なキャストなしにdoubleをintに代入できない明示的なキャスト:
int result = (int)(price * (1 + taxRate)); // 小数点以下切り捨て型変換の流れ
int price = 1000; double taxRate = 0.1;// ステップ1: intがdoubleに昇格
// 1000 * (1 + 0.1) = 1000.0 * 1.1 = 1100.0
// ステップ2: intにキャスト(切り捨て)
// (int)1100.0 = 1100
実務での応用
- 金融: calculateTax(amount, rate), convertCurrency(amount, exchangeRate)
- 図形: calculateArea(width, height), distance(x1, y1, x2, y2)
- 日付/時刻: addDays(date, count), formatDate(date, pattern)
- 文字列: substring(text, start, end), padString(text, length, char)
設計のガイドライン
- 引数は3〜4個までに制限(それ以上はオブジェクトを使用)
- 引数は論理的な順序で並べる(主語を修飾語より先に)
- 説明的な引数名を使用
- 単位を文書化(セント vs ドル、秒 vs ミリ秒)
前提知識の詳細説明
この問題を解くために必要な知識を確認しましょう。
基本概念
この問題で扱うプログラミングの基本概念を理解することが、正しい解答への第一歩です。コードの各要素がどのように連携して動作するかを把握しましょう。
実装アプローチ
問題を解くための考え方を段階的に整理します:
- 問題文を読み、入力と出力の関係を理解する
- 必要な変数やデータ構造を特定する
- 処理の流れを組み立てる
- テストケースで動作を確認する
学習目標
- 複数引数メソッドの定義方法を説明できる
- 引数の型と順序の関係を解釈できる
