Menu
Coddy logo textTech

Продвинутое форматирование строк

Часть раздела Логика и управление потоком путешествия по Java на Coddy — урок 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

challenge icon

Задание

Легко

Создайте метод с именем formatData, который принимает четыре аргумента:

  1. Строку (name) для названия продукта
  2. Дробное число (price) для цены продукта
  3. Целое число (quantity) для количества
  4. Строку (format) для типа формата вывода

Метод должен форматировать данные в зависимости от этих типов:

  • "basic": return "ITEM: {name}, PRICE: ${price}"
  • "detailed": return "PRODUCT: {name}\nPRICE: ${price}\nQUANTITY: {quantity}"
  • "total": return "TOTAL FOR {quantity}x {name}: ${total}" (total = price * quantity) Все цены должны быть отформатированы с ровно 2 знаками после запятой.

Возвращаемое сообщение:

  • Если какой-либо входной параметр равен null или формат недействителен: return "Invalid input"

Шпаргалка

Форматирование строк в Java использует спецификаторы формата с String.format():

  • %s для строк
  • %d для целых чисел
  • %.2f для вещественных чисел с 2 знаками после запятой

Форматирование строк с несколькими значениями:

String name = "John";
int age = 25;
String text = String.format("Name: %s, Age: %d", name, age);
// Result: "Name: John, Age: 25"

Форматирование десятичных чисел с заданной точностью:

double price = 19.99;
String formatted = String.format("Price: $%.2f", price);
// Result: "Price: $19.99"

Попробуйте сами

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));
    }
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком