高度な文字列フォーマット
CoddyのJavaジャーニー「ロジックとフロー」セクションの一部。レッスン 49/59。
Javaの文字列フォーマットでは、書式指定子を使って書式付き文字列を作成できます。最も一般的なものは、文字列用の%s、整数用の%d、小数用の%.2fです。
複数の値で文字列をフォーマットします。
String name = "John";
int age = 25;
String text = String.format("Name: %s, Age: %d", name, age);上記のコードを実行すると、textには次の内容が格納されます。
Name: John, Age: 25
小数を指定した精度で書式設定します:
double price = 19.99;
String formatted = String.format("Price: $%.2f", price);上記のコードを実行すると、formattedには次の内容が格納されます:
Price: $19.99
チャレンジ
簡単formatDataという名前のメソッドを作成し、次の4つの引数を受け取るようにします。
- 商品名を表すString(
name) - 商品の価格を表すdouble(
price) - 数量を表す整数(
quantity) - 出力形式の種類を表すString(
format)
メソッドは、次の種類に基づいてデータをフォーマットします。
- "basic": "ITEM: {name}, PRICE: ${price}"を返す
- "detailed": "PRODUCT: {name}\nPRICE: ${price}\nQUANTITY: {quantity}"を返す
- "total": "TOTAL FOR {quantity}x {name}: ${total}"を返す(total = price * quantity)
すべての価格は、小数点以下2桁ちょうどでフォーマットします。
返すメッセージ:
- いずれかの入力がnull、または形式が無効な場合:"Invalid input"を返す
自分で試してみよう
import java.util.Scanner;
public class Main {
public static String formatData(String name, double price, int quantity, String format) {
// ここにコードを書いてください
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String name = scanner.nextLine();
double price = Double.parseDouble(scanner.nextLine());
int quantity = Integer.parseInt(scanner.nextLine());
String format = scanner.nextLine();
if (name.equals("null")) name = null;
if (format.equals("null")) format = null;
System.out.println(formatData(name, price, quantity, format));
}
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ロジックとフローのすべてのレッスン
自分で練習してみよう: Javaオンラインコンパイラ