019-007-001

トランザクションとロールバック:ポイント操作管理

初級

問題説明

トランザクションとロールバック:ポイント操作管理

この問題では: ポイント操作(使用・追加)をトランザクションとして管理し、例外発生時にロールバックして初期状態に戻す処理を実装し、結果を標準出力に表示するプログラムを作成します。

学習目標: 例外処理を使ったトランザクションとロールバックの概念を理解する

ポイントカードの一連の操作を安全に実行するプログラムを作成します。複数の操作(ポイント使用と追加)を実行し、途中でエラーが発生した場合は操作前の状態に戻します(ロールバック)。finally句を使って、最終的な状態を常に表示します。この仕組みにより、操作の原子性(全て成功するか、全て失敗するか)を保証できます。

入力

1行目: 初期ポイント数
2行目: 使用ポイント数
3行目: 追加ポイント数

出力

正常時:

=== Transaction Manager ===
Initial: [初期]pt
Operation 1: Use [使用]pt
Operation 2: Add [追加]pt
━━━━━━━━━━━━━━━━
Transaction: Committed
Final Balance: [最終残高]pt
```java

ロールバック時:
```java
=== Transaction Manager ===
Initial: [初期]pt
Operation 1: Use [使用]pt
Operation Failed!
━━━━━━━━━━━━━━━━
Transaction: Rolled back
Final Balance: [初期]pt
Error: [エラーメッセージ]

テストケース例

※ 出力例はプログラミングの国際標準に準拠し英語で表示しています

正常系
入力:
1000
300
500
期待される出力:
=== Transaction Manager ===
Initial: 1000pt
Operation 1: Use 300pt
Operation 2: Add 500pt
━━━━━━━━━━━━━━━━
Transaction: Committed
Final Balance: 1200pt
正常系
入力:
500
1000
500
期待される出力:
=== Transaction Manager ===
Initial: 500pt
Operation 1: Use 1000pt
Operation Failed!
━━━━━━━━━━━━━━━━
Transaction: Rolled back
Final Balance: 500pt
Error: Insufficient balance

あなたの解答

現在のモード: 自分のコード
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// ここにコードを書いてください

sc.close();
}
}
0 B / 5 MB

残り 10 回実行可能