019-005-001
リソース管理:ポイントカード情報読み込み
初級
問題説明
リソース管理:ポイントカード情報読み込み
学習目標: try-with-resources文でリソースを安全に管理する方法を理解する
この問題では: try-with-resources文(try (Scanner sc = new Scanner(System.in)) {...})を使用してScannerを自動クローズし、標準入力からポイントカード情報(カードID・所有者名・ポイント数)を読み込んで指定フォーマットで表示するプログラムを作成します。
try-with-resources文の宣言部(丸括弧内)でScannerを生成することで、tryブロックを抜けた際にJavaが自動的にclose()を呼び出します。これによりリソースリークを防ぎ、finallyブロックでのクローズ処理を手動で書く必要がなくなります。
例1:標準的なカード情報(ID: 12345, 所有者: Tanaka, ポイント: 1000)
標準入力から3行のデータを読み取ります。try-with-resources文により、Scannerはtryブロックを抜ける際に自動的にクローズされます。
入力:
12345
Tanaka
1000
出力:
=== Point Card Reader ===
Card ID: 12345
Owner: Tanaka
Points: 1000pt
━━━━━━━━━━━━━━━━
Resource: Closed automatically
Status: Reading completed
```java
### 例2:別のカード情報(ID: 67890, 所有者: Suzuki, ポイント: 2500)
同様に3行のデータを読み取り、Scannerは自動的にクローズされます。リソースのクローズ処理をプログラマーが明示的に書く必要はありません。
```java
入力:
67890
Suzuki
2500
出力:
=== Point Card Reader ===
Card ID: 67890
Owner: Suzuki
Points: 2500pt
━━━━━━━━━━━━━━━━
Resource: Closed automatically
Status: Reading completed
```java
### 例3:境界値(ID: 1, 所有者: A, ポイント: 0)
最小のカードIDと0ポイントの境界値でも正しく動作します。try-with-resources文はどのような値でもリソースを安全に管理します。
```java
入力:
1
A
0
出力:
=== Point Card Reader ===
Card ID: 1
Owner: A
Points: 0pt
━━━━━━━━━━━━━━━━
Resource: Closed automatically
Status: Reading completed
```java
## 入力
標準入力からカード情報が入力されます:
1行目: カードID(整数)
2行目: 所有者名
3行目: 保有ポイント数(整数)
## 出力
```java
=== Point Card Reader ===
Card ID: [ID]
Owner: [名前]
Points: [ポイント数]pt
━━━━━━━━━━━━━━━━
Resource: Closed automatically
Status: Reading completed
テストケース例
※ 出力例はプログラミングの国際標準に準拠し英語で表示しています
正常系
入力:
12345 Tanaka 1000
期待される出力:
=== Point Card Reader === Card ID: 12345 Owner: Tanaka Points: 1000pt ━━━━━━━━━━━━━━━━ Resource: Closed automatically Status: Reading completed
正常系
入力:
67890 Suzuki 2500
期待される出力:
=== Point Card Reader === Card ID: 67890 Owner: Suzuki Points: 2500pt ━━━━━━━━━━━━━━━━ Resource: Closed automatically Status: Reading completed
境界値
入力:
1 A 0
期待される出力:
=== Point Card Reader === Card ID: 1 Owner: A Points: 0pt ━━━━━━━━━━━━━━━━ Resource: Closed automatically Status: Reading completed
正常系
入力:
99999 Yamada 5000
期待される出力:
=== Point Card Reader === Card ID: 99999 Owner: Yamada Points: 5000pt ━━━━━━━━━━━━━━━━ Resource: Closed automatically Status: Reading completed
あなたの解答
現在のモード:● 自分のコード
99
1
2
3
4
5
6
7
8
9
10
›
⌄
⌄
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 回実行可能
