الرجوع
تسجيل الدخول

مشكلة Printf Locale

3/2/2024 3 506

المشكلة

عند استعمال printf او String.format وتمرير رقم عشري وطباعته، يكون الناتج علامات استفهام

الكود

public class Main {
    public static void main(String[] args) {
        System.out.printf("%f", 1.5);
    }
}

المخرجات

????????

هذه المشكلة تصير اذا كانت لغة جهازك عربية او لغات اخرى غير الانجليزية بسبب ان الجافا تتعامل مع الارقام والفاصلة العشرية بطريقة مختلفة في كل لغة

وفي اللغة العربية تنطبع الارقام الكسرية باستعمال ارقام وفاصلة عربية، لكن التيرمنال غالبا غير قادرة على اظهار الحروف العربية، ولهذا المخرجات تكون علامات استفهام

الحل

في اول سطر تحت المين ميثود ضيف السطر التالي، ولا تنسى الامبورت بداية الملف

import java.util.Locale;

public class Main {
    public static void main(String[] args) {
        Locale.setDefault(Locale.US);
        ...
    }
}

هذا السطر يحدد لجافا استعمال الصياغ الانجليزي خلال البرنامج