0
0

Java Gold 例題集 ローカライズとフォーマット

Last updated at Posted at 2024-09-05

次の問題の出力結果を答えてください

問題 Locale設定

import java.util.Locale;

public class Main {
    public static void main(String[] args) {
        Locale locale = new Locale("ja", "JP");
        System.out.println(locale.getDisplayCountry(Locale.US));
    }
}
解答

Japan
このコードは、`Locale`オブジェクトを使用して日本の国名を英語で表示します。`Locale.US`を指定することで、表示が英語になります。

問題 数値のフォーマット

import java.text.NumberFormat;
import java.util.Locale;

public class Main {
    public static void main(String[] args) {
        Locale locale = new Locale("en", "US");
        NumberFormat formatter = NumberFormat.getCurrencyInstance(locale);
        System.out.println(formatter.format(1000.50));
    }
}
解答

$1,000.50
このコードは、USのロケールを使用して通貨の形式で数値を表示します。

問題 デフォルトロケール

デフォルトロケール: JAPAN

import java.util.Locale;

public class Main {
    public static void main(String[] args) {
        Locale defaultLocale = Locale.getDefault();
        System.out.println(defaultLocale.getLanguage());
    }
}
解答

ja
このコードは、デフォルトロケールの言語コードを表示します。結果は「ja」となります(システムのデフォルトロケールがjaの場合)。

問題 日付のフォーマット

日時が2024/08/22の場合

import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;

public class Main {
    public static void main(String[] args) {
        Locale locale = new Locale("ja", "JP");
        DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.LONG, locale);
        System.out.println(dateFormat.format(new Date()));
    }
}
解答

2024年8月22日
このコードは、日本のロケールを使用して現在の日付をLONG形式で表示します。

問題 サポートされていないロケール

import java.util.Locale;
import java.util.ResourceBundle;
import java.util.MissingResourceException;

public class Main {
    public static void main(String[] args) {
        Locale locale = new Locale("pt", "BR");
        try {
            ResourceBundle bundle = ResourceBundle.getBundle("MessagesBundle", locale);
            System.out.println(bundle.getString("greeting"));
        } catch (MissingResourceException e) {
            System.out.println("Resource not found!");
        }
    }
}
解答

Resource not found!
このコードは、サポートされていないロケールを使用した場合の例外処理を示します。

問題 数値フォーマットのデフォルトロケール

デフォルトロケールがJAPANの場合

import java.text.NumberFormat;

public class Main {
    public static void main(String[] args) {
        NumberFormat formatter = NumberFormat.getCurrencyInstance();
        System.out.println(formatter.format(123456.789));
    }
}
解答
¥123,457
デフォルトロケールを使用して数値を通貨形式で表示します(デフォルトロケールがJAPANの場合)。

Locale.setDefault("ja");とした場合、地域のロケール情報が含まれないため、国際通貨記号が表示されます。

¤123,456.79

問題 ListResourceBundleの使用

import java.util.ListResourceBundle;

public class MyResourceBundle extends ListResourceBundle {
    @Override
    protected Object[][] getContents() {
        return new Object[][]{
            {"greeting", "Hola, Mundo!"}
        };
    }
}

public class Main {
    public static void main(String[] args) {
        MyResourceBundle bundle = new MyResourceBundle();
        System.out.println(bundle.getString("greeting"));
    }
}
解答

Hola, Mundo!
このコードは、`ListResourceBundle`を使用してカスタムリソースバンドルを作成し、メッセージを表示します。

問題 ロケールの言語コード

import java.util.Locale;

public class Main {
    public static void main(String[] args) {
        Locale locale = Locale.forLanguageTag("en-GB");
        System.out.println(locale.getLanguage());
    }
}
解答

en
このコードは、言語タグを使用してロケールを作成し、その言語コードを表示します。

問題 ロケールによる数値のフォーマット

import java.text.NumberFormat;
import java.util.Locale;

public class Main {
    public static void main(String[] args) {
        Locale locale = new Locale("ja", "JP");
        NumberFormat formatter = NumberFormat.getNumberInstance(locale);
        System.out.println(formatter.format(123456.789));
    }
}
解答

123,456.789
このコードは、日本のロケールを使用して数値を標準形式で表示します。

問題 ロケールタグを使用したフォーマット

デフォルトロケールが日本の場合

import java.util.Locale;

public class Main {
    public static void main(String[] args) {
        Locale locale = Locale.forLanguageTag("zh-CN");
        System.out.println(locale.getDisplayLanguage());
    }
}
解答

中国語
このコードは、ロケールタグを使用してロケールを作成し、デフォルトロケールがJAPANの場合、その表示言語を日本語で表示します。

問題 ロケールによるパーセンテージ表示

import java.text.NumberFormat;
import java.util.Locale;

public class Main {
    public static void main(String[] args) {
        Locale locale = new Locale("fr", "FR");
        NumberFormat formatter = NumberFormat.getPercentInstance(locale);
        System.out.println(formatter.format(0.75));
    }
}
解答

75 %
このコードは、フランスのロケールを使用してパーセンテージを表示します。

問題 日付のロケール依存フォーマット

import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;

public class Main {
    public static void main(String[] args) {
        Locale locale = new Locale("de", "DE");
        DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.MEDIUM, locale);
        System.out.println(dateFormat.format(new Date()));
    }
}
解答

22.08.2024
このコードは、ドイツのロケールを使用して現在の日付をMEDIUM形式で表示します。

問題 リソースバンドルの例外処理

import java.util.Locale;
import java.util.ResourceBundle;
import java.util.MissingResourceException;

public class Main {
    public static void main(String[] args) {
        try {
            ResourceBundle bundle = ResourceBundle.getBundle("MessagesBundle", new Locale("ru", "RU"));
            System.out.println(bundle.getString("nonexistent"));
        } catch (MissingResourceException e) {
            System.out.println("Resource not found");
        }
    }
}
解答

Resource not found
このコードは、存在しないリソースを取得しようとした場合の例外処理を示しています。

問題 ロケールと時刻フォーマット

import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;

public class Main {
    public static void main(String[] args) {
        Locale locale = new Locale("es", "ES");
        DateFormat timeFormat = DateFormat.getTimeInstance(DateFormat.SHORT, locale);
        System.out.println(timeFormat.format(new Date()));
    }
}
解答

22:30
このコードは、スペインのロケールを使用して現在の時刻をSHORT形式で表示します(例として22:30)。

問題 通貨のロケール依存フォーマット

import java.text.NumberFormat;
import java.util.Locale;

public class Main {
    public static void main(String[] args) {
        Locale locale = new Locale("zh", "CN");
        NumberFormat formatter = NumberFormat.getCurrencyInstance(locale);
        System.out.println(formatter.format(1000000));
    }
}
解答

¥1,000,000.00
このコードは、中国のロケールを使用して通貨をフォーマットし表示します。

問題 メッセージフォーマットの使用

import java.text.MessageFormat;

public class Main {
    public static void main(String[] args) {
        String pattern = "The price of {0} is {1,number,currency}.";
        String message = MessageFormat.format(pattern, "Apple", 123);
        System.out.println(message);
    }
}
解答

The price of Apple is ¥123.
このコードは、MessageFormatを使用してメッセージをフォーマットし表示します。

問題 曜日のロケール依存表示

import java.text.DateFormatSymbols;
import java.util.Locale;

public class Main {
    public static void main(String[] args) {
        try {
			Locale locale = new Locale("ja", "US");
	        String[] weekdays = new DateFormatSymbols(locale).getWeekdays();
	        System.out.println(weekdays[1]);
	
		} catch (Exception e) {
			System.out.println(e.getClass());
		}
    }
}
解答
日曜日
このコードは、言語jaで日曜日の名前を表示します。 1~7の整数で曜日を表します。
0の場合: 何も表示されない
8の場合: class java.lang.ArrayIndexOutOfBoundsExceptionが表示される

問題 カスタムフォーマットパターン

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

public class Main {
    public static void main(String[] args) {
        Locale locale = new Locale("ja", "JP");
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm", locale);
        System.out.println(sdf.format(new Date()));
    }
}
解答

2024/08/22 22:30
このコードは、日本のロケールを使用してカスタムパターンで日付をフォーマットし表示します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0