Netbeans 11.1 печатает числа на языке Windows по умолчанию - PullRequest
2 голосов
/ 05 октября 2019

Я все еще изучаю Java с использованием Netbeans 11.1.

Моя проблема в том, что когда я пытаюсь запустить программу, которая должна отображать числа, я получаю числа, напечатанные на арабском языке, который является моим языком по умолчанию для Windows.

Вот что я получаю в результате:

NetBeans output window

Я добавил строку: -J-Duser.language=en -J-Duser.region=US в netbeans.conf файл, но это не решило проблему.

В другом решении предлагалось использовать scanner.useLocale(Locale.ENGLISH);, но я не мог понять, как и где его использовать. Это мой код:

package lesson02;

public class ProvidedVariablesOneStatement {
    public static void main(String[] args) {
        String name = "Khalid"; name
        int age = 24;
        double gpa = 3.40;
        System.out.printf("%s is %d years old. %s has %f gpa. \n", name, age, name, gpa);
    }
}

name печатается английскими буквами без проблем, а age и gpa печатаются арабскими цифрами. Выход:

Khalid is ٢٤ years old. Khalid has ٣٫٤٠٠٠٠٠ gpa.

1 Ответ

0 голосов
/ 06 октября 2019

Чтобы отобразить числа в выходных данных, используя западно-арабские цифры, вам просто нужно явно установить Locale в вашем приложении.

Вот немного измененная версия вашей программы, которая сначала отображает информацию, используяВосточно-арабские цифры, а затем отображает ту же информацию, используя западно-арабские цифры.

package javaapplication18;

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

public class JavaApplication18 {

    public static void main(String[] args) {

        String name = "Khalid";
        int age = 24;
        double gpa = 3.40;

        Locale arLocale = new Locale("ar");
        NumberFormat nf = NumberFormat.getInstance(arLocale);
        System.out.println("Country: " + arLocale.getCountry() + ", Language: " + arLocale.getLanguage());
        System.out.printf("%s is %s years old. %s has %s gpa. \n",
                name, nf.format(age), name, nf.format(gpa));

        Locale usLocale = new Locale("us", "EN");
        nf = NumberFormat.getInstance(usLocale);
        System.out.println("Country: " + usLocale.getCountry() + ", Language: " + usLocale.getLanguage());        
        System.out.printf("%s is %s years old. %s has %s gpa. \n",
                name, nf.format(age), name, nf.format(gpa));
    }
}

Это то, что отображается в окне Вывод в NetBeans:

Country: , Language: ar
Khalid is ٢٤ years old. Khalid has ٣٫٤ gpa. 
Country: EN, Language: us
Khalid is 24 years old. Khalid has 3.4 gpa. 

Примечания:

  • См. Oracle Java Tutorial для ознакомления с локалями.
  • См. Javadocs для Locale и NumberFormat для получения более подробной информации.
  • Youтакже должен иметь возможность установить языковой стандарт в netbeans.conf , но я решил сделать это программно, чтобы показать эффект его динамического переключения.
  • Окно Output вNetBeans должен быть настроен на использование шрифта для поддержки языка, который вы используете для вывода. Очевидно, это не проблема для вас.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...