Преобразование чисел в их английский эквивалент? [dубликат]

Может также вызываться с помощью system.net

  string domain = System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties (). DomainName  

Если строка домена пуста, машина не связана.

100
задан Jason 12 October 2010 в 06:41
поделиться

26 ответов

82
ответ дан EpicPandaForce 16 August 2018 в 00:47
поделиться
  / * Эта программа будет печатать слова для числа от 0 до 99999 * / public class NumberInWords5Digits {static int testcase1 = 93284;  public static void main (String args []) {NumberInWords5Digits testInstance = new NumberInWords5Digits ();  Строковый результат = testInstance.inWords (testcase1);  System.out.println ("Результат:" + результат);  } // напишите свой код здесь public String inWords (int num) {int digit = 0;  Строковое слово = "";  int temp = num;  while (temp & gt; 0) {if (temp% 10 & gt; = 0) digit ++;  temp = temp / 10;  } if (num == 0) возвращает «ноль»;  System.out.println (число);  if (digit == 1) word = inTens (num, digit);  else if (digit == 2) word = inTens (num, digit);  else if (digit == 3) word = inHundreds (num, digit);  else if (digit == 4) word = inThousands (num, digit);  else if (digit == 5) word = inThousands (num, digit);  возвращаемое слово;  } public String inTens (int num, int digit) {int tens = 0;  int units = 0;  if (digit == 2) {tens = num / 10;  units = num% 10;  } String unit = "";  Строка ten = "";  Строковое слово = "";  if (num == 10) {word = "ten";  return word;} if (num == 11) {word = "eleven";  return word;} if (num == 12) {word = "двенадцать";  return word;} if (num == 13) {word = "тринадцать";  return word;} if (num == 14) {word = "fourteen";  return word;} if (num == 15) {word = "пятнадцать";  return word;} if (num == 16) {word = "sixteen";  return word;} if (num == 17) {word = "семнадцать";  return word;} if (num == 18) {word = "восемнадцать";  return word;} if (num == 19) {word = "девятнадцать";  return word;} if (units == 1 || num == 1) unit = "one";  else if (units == 2 || num == 2) unit = "two";  else if (units == 3 || num == 3) unit = "three";  else if (units == 4 || num == 4) unit = "four";  else if (units == 5 || num == 5) unit = "five";  else if (units == 6 || num == 6) unit = "six";  else if (units == 7 || num == 7) unit = "seven";  else if (units == 8 || num == 8) unit = "eight";  else if (units == 9 || num == 9) unit = "девять";  если (десятки == 2) десять = «двадцать»;  иначе если (десятки = 3) десять = «тридцать»;  иначе если (десятки = 4) десять = «сорок»;  иначе если (десятки = 5) десять = «пятьдесят»;  иначе если (десятки = 6) десять = «шестьдесят»;  иначе если (десятки = 7) десять = «семьдесят»;  иначе если (десятки = 8) десять = «восемьдесят»;  иначе если (десятки = 9) десять = «девяносто»;  if (digit == 1) word = unit;  else if (digit == 2) word = ten + "" + unit;  возвращаемое слово;  } // inHundreds (525, 3) public String inHundreds (int num, int digit) {int hundred = num / 100;  // = 5 int tensAndUnits = num% 100;  // = 25 String hundred = "";  Строка tenAndUnit = "";  Строковое слово = "";  tenAndUnit = inTens (tensAndUnits, 2);  если (сотни == 1) сто = «сто»;  иначе, если (сотни == 2) сто = «двести»;  иначе, если (сотни == 3) сто = «триста»;  else if (сотни == 4) сто = "четыреста";  иначе, если (сотни == 5) сто = «пятьсот»;  иначе, если (сотни == 6) сто = «шестьсот»;  иначе если (сотни == 7) сто = «семьсот»;  иначе если (сотни = 8) сто = «восемьсот»;  иначе, если (сотни = 9) сто = «девятьсот»;  word = сто + "" + tenAndUnit;  возвращаемое слово;  } public String inThousands (int num, int digit) {int thousand = 0;  int hundredAndOthers = num% 1000;  String тыс. = "";  Строка 100AndOther = "";  Строковое слово = "";  if (digit == 5) {тыс. = num / 1000;  тыс. = inTens (тыс., 2);  } else if (digit == 4) {тыс. = num / 1000;  тыс. = inTens (тыс., 1);  } if (сотниAndOthers / 100 == 0) // в случае «023» стоAndOther = inTens (сотниAndOthers, 2);  else hundredAndOther = inHundreds (сотниAndOthers, 3);  слово = тысяча + "тысяча" + сотняДругое;  возвращаемое слово;  }}  
-1
ответ дан abhishek14d 16 August 2018 в 00:47
поделиться

Просто добавлена ​​расширяемая версия! NumberReader @ SourceForge

0
ответ дан Akhil Jain 16 August 2018 в 00:47
поделиться

Я использовал 2-мерный массив ...

  import java.util.Scanner;  public class numberEnglish {public static void main (String args []) {String [] [] aryNumbers = new String [9] [4];  aryNumbers [0] [0] = «один»;  aryNumbers [0] [1] = "ten";  aryNumbers [0] [2] = "сто и";  aryNumbers [0] [3] = "тысяча";  aryNumbers [1] [0] = "two";  aryNumbers [1] [1] = "двадцать";  aryNumbers [1] [2] = «двести и»;  aryNumbers [1] [3] = «две тысячи»;  aryNumbers [2] [0] = «три»;  aryNumbers [2] [1] = "тридцать";  aryNumbers [2] [2] = "триста и";  aryNumbers [2] [3] = «три тысячи»;  aryNumbers [3] [0] = "four";  aryNumbers [3] [1] = "fourty";  aryNumbers [3] [2] = «четыреста и»;  aryNumbers [3] [3] = «четыре тысячи»;  aryNumbers [4] [0] = "пять";  aryNumbers [4] [1] = «пятьдесят»;  aryNumbers [4] [2] = "пятьсот и";  aryNumbers [4] [3] = «пять тысяч»;  aryNumbers [5] [0] = "six";  aryNumbers [5] [1] = "sixty";  aryNumbers [5] [2] = «шестьсот и»;  aryNumbers [5] [3] = «шесть тысяч»;  aryNumbers [6] [0] = "seven";  aryNumbers [6] [1] = "семьдесят";  aryNumbers [6] [2] = «семьсот»;  aryNumbers [6] [3] = «семь тысяч»;  aryNumbers [7] [0] = "восемь";  aryNumbers [7] [1] = «восемьдесят»;  aryNumbers [7] [2] = "восемьсот и";  aryNumbers [7] [3] = «восемь тысяч»;  aryNumbers [8] [0] = "девять";  aryNumbers [8] [1] = "ninty";  aryNumbers [8] [2] = "девятьсот и";  aryNumbers [8] [3] = «девять тысяч»;  //System.out.println.aryNumbers[0] + "" + aryNumbers [0] + "");  int number = 0;  Сканер sc = новый сканер (System.in);  System.out.println («Введите номер 4 цифра ::»);  number = sc.nextInt ();  int temp = число;  int count = 1;  String english = "";  Строка tenglish = "";  if (number == 0) {System.out.println ("*********");  System.out.println ( "нулевой");  System.out.println ( "*********");  sc.close ();  вернуть;  } while (temp! = 0) {int r = temp% 10;  if (r == 0) {tenglish = "zero";  подсчитывать ++;  } else {int t1 = r-1;  int t2 = count-1;  //System.out.println(t1 + "" + t2);  подсчитывать ++;  tenglish = aryNumbers [t1] [t2];  //System.out.println(aryNumbers[t1][t2]);  } english = tenglish + "" + английский;  temp = temp / 10;  } //System.out.println(aryNumbers[0][0]);  english = english.replace («десять ноль», «десять»);  english = english.replace («двадцать ноль», «двадцать»);  english = english.replace («тридцать ноль», «тридцать»);  english = english.replace ("fourty zero", "fourty");  english = english.replace («пятьдесят ноль», «пятьдесят»);  english = english.replace («шестьдесят ноль», «шестьдесят»);  english = english.replace («семьдесят ноль», «семьдесят»);  english = english.replace («восемьдесят ноль», «восемьдесят»);  english = english.replace («девяносто ноль», «девяносто»);  english = english.replace («десять один», «одиннадцать»);  english = english.replace («десять два», «двенадцать»);  english = english.replace («десять три», «тринадцать»);  english = english.replace («десять четыре», «четырнадцать»);  english = english.replace («десять пять», «пятнадцать»);  english = english.replace («десять шесть», «шестнадцать»);  english = english.replace («десять семь», «семнадцать»);  english = english.replace («десять восемь», «восемнадцать»);  english = english.replace («десять девять», «девятнадцать»);  english = english.replace («ноль», «»);  int length = english.length ();  Строка sub = english.substring (длина-6, длина-3);  //System.out.println(length);  //System.out.println(sub);  if (sub.equals ("and")) {//System.out.println("hello ");  английский = english.substring (0, длина-6);  } System.out.println ("******************************************  ** ");  System.out.println (английский);  System.out.println ( "*******************************************  * ");  sc.close ();  }  

}

-4
ответ дан alluhur 16 August 2018 в 00:47
поделиться
  • 1
    У этого кода есть ошибка. Вы написали 90 как «ninty». в одном месте и "девяносто" в другой. – Andrew Medico 30 June 2014 в 21:53

Вы можете использовать RuleBasedNumberFormat. например, результат даст вам Девяносто

  ULocale locale = новый ULocale (Locale.US);  // us english Double d = Double.parseDouble (90);  NumberFormat formatter = new RuleBasedNumberFormat (locale, RuleBasedNumberFormat.SPELLOUT);  Строковый результат = formatter.format (d);   

Он поддерживает широкий диапазон языков.

0
ответ дан Arade 16 August 2018 в 00:47
поделиться

Я написал чистую версию для 32-битных целых чисел и английского языка:

http://www.source-code.biz/snippets/java/13.htm

0
ответ дан Christian d'Heureuse 16 August 2018 в 00:47
поделиться
  / ** В этой программе будет отображаться заданный номер в словах от 0 до 999999999 @author Manoj Kumar Dunna Mail Id: manojdunna@gmail.com ** / import java.util.Scanner;  class NumberToString {public enum hundred {Столбцы, сотни, три сотни, четыре сотни, пятьсот, шестьсот, семьсот, восемьсот, девятьсот) публичные перечисления десятки {Двадцать, тридцать, сорок, пятьдесят, шестьдесят, семьдесят, восемьдесят, девяносто} публичных перечислений {One  , Два, Три, Четыре, Пять, Шесть, Семь, Восемь, Девять} общедоступный enum denom {Thousand, Lakhs, Crores} public enum splNums {Десять, Одиннадцать, Двенадцать, Тринадцать, Четырнадцать, Пятнадцать, Шестнадцать, Семнадцать, Восемнадцать, Девятнадцать  } public static String text = "";  public static void main (String [] args) {System.out.println ("Введите число для преобразования в слова");  Сканер sc = новый сканер (System.in);  long num = sc.nextInt ();  int rem = 0;  int i = 0;  while (num & gt; 0) {if (i == 0) {rem = (int) (num% 1000);  printText (бэр);  num = num / 1000;  я ++;  } else if (num & gt; 0) {rem = (int) (num% 100);  if (rem & gt; 0) text = denom.values ​​() [i-1] + "" + текст;  printText (бэр);  num = num / 100;  я ++;  }} if (i & gt; 0) System.out.println (текст);  else System.out.println («Zero»);  } public static void printText (int num) {if (! (num & gt; 9 & amp; num & lt; 19)) {if (num% 10 & gt; 0) getOnes (num% 10);  num = num / 10;  если (num% 10 & gt; 0) getTens (num% 10);  num = num / 10;  if (num & gt; 0) getHundreds (num);  } else {getSplNums (num% 10);  }} public static void getSplNums (int num) {text = splNums.values ​​() [num] + "" + текст;  } public static void getHundreds (int num) {text = hundreds.values ​​() [num - 1] + "" + текст;  } public static void getTens (int num) {text = tens.values ​​() [num - 2] + "" + текст;  } public static void getOnes (int num) {text = ones.values ​​() [num - 1] + "" + текст;  }}  
7
ответ дан Dawood ibn Kareem 16 August 2018 в 00:47
поделиться
  • 1
    Лах и Кроу используют индийский английский, но не в Европе, а не в Америке. См. [D0] Википедия . – CoperNick 28 November 2012 в 19:12
  • 2
    Короткие и сладкие ............. – sunleo 3 July 2013 в 05:52
  • 3
    Это не работает для 215 и т. Д. – The Coder 17 March 2016 в 21:18

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

Просто вызовите его, как показано ниже

  Слова w = Words.getInstance (1234567);  System.out.println (w.getNumberInWords ());   

Моя программа поддерживает до 10 миллионов. Если вы хотите, вы все равно можете расширить это. Только ниже примера выведите

  2345223 = Двадцать три Лаха Четыредцать пять тысяч Две сотни Двадцать три 9999999 = Девяносто девять Лах Девяносто девять Девять Сто девяносто девять 199 = Сто девяносто девять Десять [10]  d2] 

Спасибо

Santhosh

0
ответ дан dkb 16 August 2018 в 00:47
поделиться

Взгляните на Tradukisto . Это написанная Java-библиотека, которая выполняет эту работу.

4
ответ дан Dorian Sarnowski 16 August 2018 в 00:47
поделиться
  • 1
    Есть ли причина, почему все эти ответы имеют плохую грамматику? "одна тысяча двести тридцать четыре" должна быть «одна тысяча двести и тридцать четыре». Это какой-то банковский английский, о котором я не знаю? – weston 19 October 2015 в 19:39
  • 2
    @weston В американском английском языке & quot; и & quot; не используется. Это только на английском. – 4castle 15 March 2017 в 23:28
  • 3
    @ 4castle хе, американская жена, я живу в Канаде, и я никогда не замечал! – weston 16 March 2017 в 02:35
  / * эта программа будет отображать номер в словах, например.  если вы введете 101, он покажет «ОДИН СТО И ОДИН» * / import java.util. *;  public class NumToWords {Строка string;  String st1 [] = {"", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine",};  String st2 [] = {«сто», «тысяча», «лак», «crore»};  Строка st3 [] = {«десять», «одиннадцать», «двенадцать», «тринадцать», «четырнадцать», «пятнадцать», «шестнадцать», «семнадцать», «восемнадцать», «ninteen»,};  String st4 [] = {"двадцать", "тридцать", "четыредцать", "пятьдесят", "шестьдесят", "семьдесят", "восемьдесят", "девяносто"};  public String convert (int number) {int n = 1;  int word;  string = "";  while (number! = 0) {switch (n) {case 1: word = number% 100;  пароль);  если (число & gt; 100 & amp; & amp; номер% 100! = 0) {показать ("и");  //System.out.print("ankit ");  } число / = 100;  ломать;  случай 2: слово = число% 10;  if (word! = 0) {show ("");  шоу (ST2 [0]);  показать(" ");  пароль);  } число / = 10;  ломать;  случай 3: слово = число% 100;  if (word! = 0) {show ("");  шоу (ST2 [1]);  показать(" ");  пароль);  } число / = 100;  ломать;  случай 4: слово = число% 100;  if (word! = 0) {show ("");  шоу (ST2 [2]);  показать(" ");  пароль);  } число / = 100;  ломать;  случай 5: слово = число% 100;  if (word! = 0) {show ("");  шоу (ST2 [3]);  показать(" ");  пароль);  } число / = 100;  ломать;  } n ++;  } return string;  } public void pass (int number) {int word, q;  if (число & lt; 10) {show (st1 [число]);  } if (число & gt; 9 & amp; & amp; номер & lt; 20) {show (st3 [число - 10]);  } if (число & gt; 19) {word = number% 10;  if (слово == 0) {q = число / 10;  show (st4 [q - 2]);  } else {q = число / 10;  шоу (st1 [слово]);  показать(" ");  show (st4 [q - 2]);  }}} public void show (String s) {String st;  st = строка;  string = s;  string + = st;  } public static void main (String [] args) {NumToWords w = new NumToWords ();  Вход сканера = новый сканер (System.in);  System.out.print («Введите номер:»);  int num = input.nextInt ();  String inwords = w.convert (num);  System.out.println (inwords);  }}  
0
ответ дан Em1 16 August 2018 в 00:47
поделиться
  • 1
    Вам нужно добавить некоторое описание вместе с кодом ... Добро пожаловать в Stackoverflow – Sandip Armal Patil 27 October 2012 в 20:41

Я думаю, что это может помочь вам ... программа очень проста и отлично работает

  import java.util. *;  public class NumberToWord {public void pw (int n, String ch) {String one [] = {"", "one", "two", "three", "four", "five", "six", "seven  «восемь», «девятка», «десять», «одиннадцать», «двенадцать», «тринадцать», «четырнадцать», «пятнадцать», «шестнадцать», «семнадцать», «восемнадцать», «девятнадцать»)  ;  Строка десять [] = {"", "", "двадцать", "тридцать", "сорок", "пятьдесят", "шестьдесят", "семьдесят", "восемьдесят", "девяносто"};  если (n & gt; 19) {System.out.print (десять [n / 10] + "" + one [n% 10]);  } else {System.out.print (один [n]);  } if (n & gt; 0) System.out.print (ch);  } public static void main (String [] args) {int n = 0;  Сканер s = новый сканер (System.in);  System.out.print ("Введите целочисленное число:");  n = s.nextInt ();  if (n & lt; = 0) System.out.print ("Введите числа больше 0");  else {NumberToWord a = new NumberToWord ();  System.out.print («После номера преобразования в словах:»);  a.pw ((n / 1000000000), «Сто»);  a.pw ((n / 10000000)% 100, «crore»);  a.pw ((n / 100000)% 100), "lakh");  a.pw (((n / 1000)% 100), «тысяч»);  a.pw (((n / 100)% 10), «сто»);  a.pw ((n% 100), "");  }}}  
1
ответ дан feel good and programming 16 August 2018 в 00:47
поделиться
0
ответ дан hyprfrcb 16 August 2018 в 00:47
поделиться
  public class NumberConverter {private String [] singleDigit = {"", "one", "two", "three", "four", "five", "six", "seven", "eight  ", " 9"};  частная строка [] десятки = {«десять», «одиннадцать», «двенадцать», «тринадцать», «четырнадцать», «пятнадцать», «шестнадцать», «семнадцать», «восемнадцать», «девятнадцать»};  private String [] twoDigits = {"", "", "двадцать", "тридцать", "сорок", "пятьдесят", "шестьдесят", "семьдесят", "восемьдесят", "девяносто"};  public String convertToWords (ввод строки) {long number = Long.parseLong (ввод);  int size = input.length ();  if (size & lt; = 3) {int num = (int) number;  return handle3Digits (num);  } else if (размер & gt; 3 & amp; & amp; размер & lt; = 6) {int тыс. = (int) (число / 1000);  int hundred = (int) (число% 1000);  Строка тыс. = Ручка3Дигиты (тыс.);  String hundred = handle3Digits (сот);  Строковое слово = "";  if (! тысячи.isEmpty ()) {слово = тысячи + "тыс.";  } слово + = сотни;  возвращаемое слово;  } else if (size & gt; 6 & amp; & amp; size & lt; = 9) {int million = (int) (число / 1000000);  число = число% 1000000;  int тыс. = (int) (число / 1000);  int hundred = (int) (число% 1000);  String million = handle3Digits (млн);  Строка тыс. = Ручка3Дигиты (тыс.);  String hundred = handle3Digits (сот);  Строковое слово = "";  if (! million.isEmpty ()) {word = million + "million";  } if (! тысячи.isEmpty ()) {слово + = тысячи + "тыс.";  } слово + = сотни;  возвращаемое слово;  } return «Еще не реализовано».;  } private String handle3Digits (int number) {if (number & lt; = 0) return "";  Строковое слово = "";  if (число / 100 & gt; 0) {int divend = number / 100;  word = singleDigit [dивиденд] + «сто»;  число = число% 100;  } if (число / 10 & gt; 1) {int divend = number / 10;  число = число% 10;  word + = twoDigits [dивиденд];  } else if (number / 10 == 1) {number = number% 10;  слово + = десятки [число];  возвращаемое слово;  } else {number = number% 10;  } if (число & gt; 0) {word + = singleDigit [число];  } return word;  }}  
-1
ответ дан Kohei TAMURA 16 August 2018 в 00:47
поделиться
  import java.lang. *;  import java.io. *;  public class rupee {public static void main (String [] args) throws IOException {int len ​​= 0, revnum = 0, i, dup = 0, j = 0, k = 0;  int gvalue;  String [] = {«один», «два», «три», «четыре», «пять», «шесть», «семь», «восемь», «девять», «одиннадцать», «двенадцать»,  "Тринадцать", "Четырнадцать", "пятнадцать", "Шестнадцать", "Семнадцать", "Восемнадцать", "Девятнадцать", ""};  String [] twos = {«Десять», «Двадцать», «Тридцать», «Четвертый», «Пятьдесят», «Шестьдесят», «Семьдесят», «восемьдесят», «Девяносто», «»};  System.out.println ("\n Введите значение");  InputStreamReader b = новый InputStreamReader (System.in);  BufferedReader br = новый BufferedReader (b);  GValue = Integer.parseInt (br.readLine ());  if (gvalue == 10) System.out.println («Десять»);  else if (gvalue == 100) System.out.println («Сто»);  else if (gvalue == 1000) System.out.println («Тысяча»);  DUP = GValue;  для (i = 0; dup & gt; 0; i ++) {revnum = revnum * 10 + dup% 10;  Len ++;  DUP = DUP / 10;  } while (j & lt; len) {if (gvalue & lt; 10) {System.out.println (единицы [gvalue-1]);  } else if (gvalue & gt; 10 & amp; & amp; gvalue & lt; = 19) {System.out.println (единицы [gvalue-2]);  ломать;  } else if (gvalue & gt; 19 & amp; & amp; gvalue & lt; 100) {k = gvalue / 10;  GValue = GValue% 10;  System.out.println (двойки [K-1]);  } else if (gvalue & gt; 100 & amp; gvalue & lt; 1000) {k = gvalue / 100;  GValue = GValue% 100;  System.out.println (единицы [k-1] + «Сто»);  } else if (gvalue & gt; = 1000 & amp; gvalue & lt; 9999) {k = gvalue / 1000;  GValue = GValue% 1000;  System.out.println (те [K-1] + "Тыс");  } else if (gvalue & gt; = 11000 & amp; gvalue & lt; = 19000) {k = gvalue / 1000;  GValue = GValue% 1000;  System.out.println (двойки [K-2] + "Тыс");  } else if (gvalue & gt; = 12000 & amp; gvalue & lt; 100000) {k = gvalue / 10000;  GValue = GValue% 10000;  System.out.println (те [GValue-1]);  } else {System.out.println ("");  } j ++;  }}}  
-1
ответ дан kowsalyajaganathan 16 August 2018 в 00:47
поделиться

ICU4J содержит хорошую поддержку номера-spellout. Файлы с «правилами» могут быть легко отредактированы, и нет никакого смысла добавлять другие языки (мы сделали это, например, для польского и русского).

50
ответ дан Landei 16 August 2018 в 00:47
поделиться
  • 1
    Данные ICU4J поступают из CLDR unicode.org/cldr и уже поддерживают польский и русский языки. unicode.org/repos/cldr/trunk/common/rbnf Вы отправили билет, если обнаружили проблемы с существующими правилами? – Steven R. Loomis 12 October 2010 в 15:30
  • 2
    Нет, но мы сделали это несколько лет назад, и, если я правильно помню, нам нужны были некоторые дополнительные вещи. Но хорошо знать! – Landei 12 October 2010 в 18:18
  • 3
    RBNF провел капитальные ремонты примерно год назад, как в CLDR, так и в ОИТ. Проверьте это. – Steven R. Loomis 12 October 2010 в 18:36
  • 4
    Этот должен быть выбранным ответом, поскольку другие зависят от ошибок и неаторальных реализаций примеров – ooxi 30 June 2014 в 05:46
  • 5
    Да! Это должен быть выбранный ответ ... Он работал как шарм ... Он переводится на любой язык, любой регион, любую страну, указанную здесь iana.org/assignments/language-subtag-registry/… . Использование так же просто. RuleBasedNumberFormat ruleBasedNumberFormat = new RuleBasedNumberFormat (новый язык («EN», «US»), RuleBasedNumberFormat.SPELLOUT); System.out.println (ruleBasedNumberFormat.format (значение)); – Muthu Ganapathy Nathan 18 April 2015 в 10:47

Это еще один способ ... (с ограниченным диапазоном)

  public static String numToWord (Integer i) {final String [] units = {"Zero", "One", "  «Три», «Четыре», «Пять», «Шесть», «Семь», «Восемь», «Девять», «Десять», «Одиннадцать», «Двенадцать», «Тринадцать», «Четырнадцать»,  «Пятнадцать», «шестнадцать», «семнадцать», «восемнадцать», «девятнадцать»);  final String [] tens = {"", "", "Двадцать", "Тридцать", "Сорок", "Пятьдесят", "Шестьдесят", "Семьдесят", "Восемьдесят", "Девяносто"};  если (i & lt; 20) возвратные единицы [i];  если (i & lt; 100) возвращают десятки [i / 10] + ((i% 10 & gt; 0)? "" + numToWord (i% 10): "");  если (i & lt; 1000) единицы возврата [i / 100] + «Сто» + ((i% 100 & gt; 0)? »и« + numToWord (i% 100): «»);  if (i & lt; 1000000) возвращает numToWord (i / 1000) + «Thousand» + ((i% 1000 & gt; 0)? »« + numToWord (i% 1000): «»);  return numToWord (i / 1000000) + «Миллион» + ((i% 1000000 & gt; 0)? »« + numToWord (i% 1000000): «»);  }  
0
ответ дан Nirav Radia 16 August 2018 в 00:47
поделиться

это может помочь

  public String numberToWords (длинное число) {if (number == 0) {return "zero";  } if (число & lt; 0) {return "минус" + numberToWords (Math.abs (number));  } Строковые слова = "";  if ((number / 10000000) & gt; 0) {words + = numberToWords (число / 10000000) + «Crore»;  число% = 10000000;  } if ((число / 100000) & gt; 0) {words + = numberToWords (число / 100000) + «Lakh»;  число% = 100000;  } if ((число / 1000) & gt; 0) {words + = numberToWords (число / 1000) + «Тысяча»;  число% = 1000;  } if ((число / 100) & gt; 0) {words + = numberToWords (число / 100) + «Сто»;  число% = 100;  } if (number & gt; 0) {if (! words.equals ("")) {слова + = "и";  } if (число & lt; 20) {words + = number;  } else {слова + = (число);  if ((число% 10) & gt; 0) {слова + = "-" + (число% 10);  }}} возвращать слова;  }  
0
ответ дан Rakshit Soni 16 August 2018 в 00:47
поделиться
  import java.util.Scanner;  public class StringToNum {public static void main (String args []) {Сканер sc = новый сканер (System.in);  System.out.println («Введите no:»);  int no = sc.nextInt ();  int arrNum [] = new int [10];  int i = 0;  while (no! = 0) {arrNum [i] = no% 10;  нет нет = нет / 10;  я ++;  } int len ​​= i;  int arrNum1 [] = new int [len];  int j = 0;  для (int k = len-1; k & gt; = 0; k--) {arrNum1 [j] = arrNum [k];  j ++;  } StringToNum stn = new StringToNum ();  Строковый вывод = "";  switch (len) {case 1: {output + = stn.strNum1 (arrNum1 [len-1]);  System.out.println ( "выход =" + выход);  ломать;  } случай 2: {int no1 = arrNum1 [len-2] * 10 + arrNum1 [len-1];  if (no1 & gt; = 11 & amp; no1 & lt; = 19) {output = stn.strNum2 (no1);  // output = output + "" + stn.strNum1 (arrNum1 [len-1]);  System.out.println ( "выход =" + выход);  } else {arrNum1 [len-2] = arrNum1 [len-2] * 10;  выход + = stn.strNum2 (arrNum1 [LEN-2]);  output = output + "" + stn.strNum1 (arrNum1 [len-1]);  System.out.println ( "выход =" + выход);  } ломать;  } случай 3: {output = stn.strNum1 (arrNum1 [len-3]) + "сто";  int no1 = arrNum1 [len-2] * 10 + arrNum1 [len-1];  if (no1 & gt; = 11 & amp; no1 & lt; = 19) {output = stn.strNum2 (no1);  } else {arrNum1 [len-2] = arrNum1 [len-2] * 10;  выход + = stn.strNum2 (arrNum1 [LEN-2]);  output = output + "" + stn.strNum1 (arrNum1 [len-1]);  } System.out.println ("output =" + output);  ломать;  } case 4: {output = stn.strNum1 (arrNum1 [len-4]) + "тыс.";  if (! stn.strNum1 (arrNum1 [len - 3]). равен ("")) {output + = stn.strNum1 (arrNum1 [len-3]) + "сто";  } int no1 = arrNum1 [len-2] * 10 + arrNum1 [len-1];  if (no1 & gt; = 11 & amp; no1 & lt; = 19) {output = stn.strNum2 (no1);  } else {arrNum1 [len-2] = arrNum1 [len-2] * 10;  выход + = stn.strNum2 (arrNum1 [LEN-2]);  output = output + "" + stn.strNum1 (arrNum1 [len-1]);  } System.out.println ("output =" + output);  ломать;  } случай 5: {int no1 = arrNum1 [len-5] * 10 + arrNum1 [len-4];  if (no1 & gt; = 11 & amp; no1 & lt; = 19) {output = stn.strNum2 (no1) + "тыс.";  } else {arrNum1 [len-5] = arrNum1 [len-5] * 10;  выход + = stn.strNum2 (arrNum1 [LEN-5]);  output = output + "" + stn.strNum1 (arrNum1 [len-4]) + "тыс.";  } if (! stn.strNum1 (arrNum1 [len - 3]). равен ("")) {output + = stn.strNum1 (arrNum1 [len-3]) + "сто";  } no1 = arrNum1 [len - 2] * 10 + arrNum1 [len - 1];  if (no1 & gt; = 11 & amp; no1 & lt; = 19) {output = stn.strNum2 (no1);  } else {arrNum1 [len-2] = arrNum1 [len-2] * 10;  выход + = stn.strNum2 (arrNum1 [LEN-2]);  output = output + "" + stn.strNum1 (arrNum1 [len-1]);  } System.out.println ("output =" + output);  ломать;  } case 6: {output + = stn.strNum1 (arrNum1 [len-6]) + "million";  int no1 = arrNum1 [len-5] * 10 + arrNum1 [len-4];  if (no1 & gt; = 11 & amp; no1 & lt; = 19) {output + = stn.strNum2 (no1) + "тыс.";  } else {arrNum1 [len-5] = arrNum1 [len-5] * 10;  выход + = stn.strNum2 (arrNum1 [LEN-5]);  output = output + "" + stn.strNum1 (arrNum1 [len-4]) + "тыс.";  } if (! stn.strNum1 (arrNum1 [len - 3]). равен ("")) {output + = stn.strNum1 (arrNum1 [len-3]) + "сто";  } no1 = arrNum1 [len - 2] * 10 + arrNum1 [len - 1];  if (no1 & gt; = 11 & amp; no1 & lt; = 19) {output = stn.strNum2 (no1);  } else {arrNum1 [len-2] = arrNum1 [len-2] * 10;  выход + = stn.strNum2 (arrNum1 [LEN-2]);  output = output + "" + stn.strNum1 (arrNum1 [len-1]);  } System.out.println ("output =" + output);  ломать;  } case 7: {int no1 = arrNum1 [len-7] * 10 + arrNum1 [len-6];  if (no1 & gt; = 11 & amp; no1 & lt; = 19) {output = stn.strNum2 (no1) + "Milloin";  } else {arrNum1 [len-7] = arrNum1 [len-7] * 10;  выход + = stn.strNum2 (arrNum1 [LEN-7]);  output = output + "" + stn.strNum1 (arrNum1 [len-6]) + "Million";  } no1 = arrNum1 [len-5] * 10 + arrNum1 [len-4];  if (no1 & gt; = 11 & amp; no1 & lt; = 19) {output = stn.strNum2 (no1) + "Thousand";  } else {arrNum1 [len-5] = arrNum1 [len-5] * 10;  выход + = stn.strNum2 (arrNum1 [LEN-5]);  output = output + "" + stn.strNum1 (arrNum1 [len-4]) + "Thousand";  } if (! stn.strNum1 (arrNum1 [len - 3])) равно ("")) {output + = stn.strNum1 (arrNum1 [len-3]) + «Сто»;  } no1 = arrNum1 [len - 2] * 10 + arrNum1 [len - 1];  if (no1 & gt; = 11 & amp; no1 & lt; = 19) {output = stn.strNum2 (no1);  } else {arrNum1 [len-2] = arrNum1 [len-2] * 10;  выход + = stn.strNum2 (arrNum1 [LEN-2]);  output = output + "" + stn.strNum1 (arrNum1 [len-1]);  } System.out.println ("output =" + output);  ломать;  }}} Строка strNum1 (int a) {String op = "";  switch (a) {case 1: {op = "one";  ломать;  } случай 2: {op = "two";  ломать;  } случай 3: {op = "three";  ломать;  } случай 4: {op = "four";  ломать;  } случай 5: {op = "five";  ломать;  } случай 6: {op = "six";  ломать;  } case 7: {op = "seven";  ломать;  } case 8: {op = "eight";  ломать;  } случай 9: {op = "девять";  ломать;  }} return op;  } Строка strNum2 (int a) {String op = "";  switch (a) {case 10: {op = "ten";  ломать;  } случай 20: {op = "двадцать";  ломать;  } случай 30: {op = "тридцать";  ломать;  } case 40: {op = "fourty";  ломать;  } случай 50: {op = "пятьдесят";  ломать;  } case 60: {op = "sixty";  ломать;  } случай 70: {op = "семьдесят";  ломать;  } случай 80: {op = "восемьдесят";  ломать;  } случай 90: {op = "ninty";  ломать;  } случай 11: {op = "одиннадцать";  ломать;  } случай 12: {op = "двенадцать";  ломать;  } случай 13: {op = "тринадцать";  ломать;  } случай 14: {op = "четырнадцать";  ломать;  } случай 15: {op = "пятнадцать";  ломать;  } случай 16: {op = "шестнадцать";  ломать;  } случай 17: {op = "семнадцать";  ломать;  } случай 18: {op = "восемнадцать";  ломать;  } случай 19: {op = "девятнадцать";  ломать;  }} return op;  }}  
-2
ответ дан Riyar Ajay 16 August 2018 в 00:47
поделиться

Я думаю, что это решение не самое лучшее, поскольку оно работает только для int , но я думаю, что это отлично для новичков.

  public class NumberWordConverter {  public static final String [] units = {"", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten  «одиннадцать», «двенадцать», «тринадцать», «четырнадцать», «пятнадцать», «шестнадцать», «семнадцать», «восемнадцать», «девятнадцать»);  public static final String [] tens = {"", // 0 "", // 1 "двадцать", // 2 "тридцать", // 3 "сорок", // 4 "пятьдесят", // 5 "  шестьдесят ", // 6" семьдесят ", // 7" восемьдесят ", // 8" девяносто "// 9};  public static String convert (final int n) {if (n & lt; 0) {return "минус" + convert (-n);  } if (n & lt; 20) {return units [n];  } if (n & lt; 100) {return tens [n / 10] + ((n% 10! = 0)? "": "") + единиц [n% 10];  } if (n & lt; 1000) {возвратные единицы [n / 100] + "сто" + ((n% 100! = 0)? "": "") + конвертировать (n% 100);  } if (n & lt; 1000000) {return convert (n / 1000) + "тыс." + ((n% 1000! = 0)? "": "") + конвертировать (n% 1000);  } if (n & lt; 1000000000) {return convert (n / 1000000) + "million" + ((n% 1000000! = 0)? "": "") + convert (n% 1000000);  } return convert (n / 1000000000) + «миллиард» + ((n% 1000000000! = 0)? "": "") + конвертировать (n% 1000000000);  } public static void main (final String [] args) {final Random generator = new Random ();  int n;  for (int i = 0; i & lt; 20; i ++) {n = generator.nextInt (Integer.MAX_VALUE);  System.out.printf ("% 10d = '% s'% n", n, convert (n));  } n = 1000;  System.out.printf ("% 10d = '% s'% n", n, convert (n));  n = 2000;  System.out.printf ("% 10d = '% s'% n", n, convert (n));  n = 10000;  System.out.printf ("% 10d = '% s'% n", n, convert (n));  n = 11000;  System.out.printf ("% 10d = '% s'% n", n, convert (n));  n = 999999999;  System.out.printf ("% 10d = '% s'% n", n, convert (n));  n = Integer.MAX_VALUE;  System.out.printf ("% 10d = '% s'% n", n, convert (n));  }}  

Тест создает 20 случайных чисел до Integer.MAX_VALUE , а некоторые из них знают, что они проблематичны из-за 0, 10 и т. д. Выход :

  5599908 = «пять миллионов пятьсот девяносто девять тысяч девятьсот восемь» 192603486 = «сто девяносто два миллиона шестьсот три тысячи четыреста восемьдесят шесть» 1392431868 = «один миллиард триста девяносто  два миллиона четыреста тридцать одна тысяча восемьсот шестьдесят восемь »1023787010 =« один миллиард двадцать три миллиона семьсот восемьдесят семь тысяч десять »1364396236 =« один миллиард триста шестьдесят четыре миллиона триста девяносто шесть тысяч двести тридцать шесть »1511255671 =  один миллиард пятьсот одиннадцать миллионов двести пятьдесят пять тысяч шестьсот семьдесят один «225955221 =« двести двадцать пять миллионов девятьсот пятьдесят пять тысяч двести двадцать один »1890141052 =« один миллиард восемьсот девяносто миллионов сто сорок одна тысяча пятьдесят два  '261839422 =' два  сто шестьдесят один миллион восемьсот тридцать девять тысяч четыреста двадцать два »728428650 =« семьсот двадцать восемь миллионов четыреста двадцать восемь тысяч шестьсот пятьдесят »860607319 =« восемьсот шестьдесят миллионов шестьсот семь тысяч триста девятнадцать »719753587 =« семь  сто девятнадцать миллионов семьсот пятьдесят три тысячи пятьсот восемьдесят семь »2063829124 =« два миллиарда шестьдесят три миллиона восемьсот двадцать девять тысяч сто двадцать четыре »1081010996 =« один миллиард восемьдесят один миллион десять тысяч девятьсот девяносто шесть »999215799 =« девять  сто девяносто девять миллионов двести пятнадцать тысяч семьсот девяносто девять »2105226236 =« два миллиарда сто пять миллионов двести двадцать шесть тысяч двести тридцать шесть »1431882940 =« один миллиард четыреста тридцать один миллион восемьсот восемьдесят две тысячи девятьсот сорок  '1991707241 =' один миллиард девятьсот девяносто один миллион семьсот семь тысяч две сотни форт  y one '1088301563 =' один миллиард восемьдесят восемь миллионов триста одна тысяча пятьсот шестьдесят три '964601609 =' девятьсот шестьдесят четыре миллиона шестьсот одна тысяча шестьсот девять '1000 =' одна тысяча '2000 =' две тысячи '10000 =  «десять тысяч» 11000 = «одиннадцать тысяч» 999999999 = «девятьсот девяносто девять миллионов девятьсот девяносто девять тысяч девятьсот девяносто девять» 2147483647 = «два миллиарда сто сорок семь миллионов четыреста восемьдесят три тысячи шестьсот сорок семь»  

Надеюсь, что это поможет:)

16
ответ дан robosoul 16 August 2018 в 00:47
поделиться

Я реализовал его так:

  package com.stack.overflow.number.in.english;  import java.util.ResourceBundle;  public class ActualImplementation {public static ResourceBundle readPropertyFile = ResourceBundle .getBundle ("NumberEnglishRepresentation");  public static void main (String [] args) {System.out.println (ActualImplementation.main (-2));  } public static String main (Целочисленное число) {int power;  // Вычисление числа цифр Целое числоOfDigits = number & gt;  0?  (int) Math.log10 ((double) number) + 1: 1;  Строковый вывод = "";  // Если число отрицательно, преобразуйте его в положительное значение append минус до // output if (Integer.signum (number) == -1) {output = "минус";  число = число & lt;  0?  число * -1: число;  } Строка stringVal = String.valueOf (число);  if (number & lt; = 20 || number == 30 || number == 40 || number == 50 || number == 60 || number == 70 || number == 80 || number == 90 |  | number == 100 || number == 1000) output + = readPropertyFile.getString (stringVal);  else {int i;  for (i = 0; i & lt; numberOfDigits; i ++) {if (number! = 0) {numberOfDigits = number & gt;  0?  (int) Math .log10 ((double) number) + 1: 1;  power = (int) Math.pow (10, numberOfDigits - 1);  // Если число равно 10 001, то сначала напечатайте десять, а затем // оставшееся значение, если (numberOfDigits & gt; = 5 & amp; & amp; номерOfDigits% 2 == 1) {power = (int) Math.pow (10, numberOfDigits - 2  );  } if (readPropertyFile.containsKey (String.valueOf (number))) output + = readPropertyFile.getString (String .valueOf (number));  else {// Поскольку числа в единицах и десятки места считываются // иначе, если (numberOfDigits & gt; 2) {output + = readPropertyFile.getString (String .valueOf (число / мощность)) + readPropertyFile.getString (String .valueOf (  мощность));  } else {output + = readPropertyFile.getString (String .valueOf (число - число% мощности));  }} number = (int) (количество% мощности);  }}} return output;  }}  

, а файл ресурсов:

  0 = ноль 1 = один 2 = два 3 = три 4 = четыре 5 = пять 6 = шесть  7 = семь 8 = восемь 9 = девять 10 = десять 11 = одиннадцать 12 = двенадцать 13 = тринадцать 14 = четырнадцать 15 пятнадцать 16 = шестнадцать 17 = семнадцать 18 = восемнадцать 19 = девятнадцать 20 = двадцать 30 = тридцать 40 = четыредцать 50 = пятьдесят 60  = шестьдесят 70 = семьдесят 80 = восемьдесят 90 = девяносто 100 = сто 1000 = тысяча 100000 = Лах  

Этот вариант реализуется до 10 лакхов только

-1
ответ дан Stephen Ostermiller 16 August 2018 в 00:47
поделиться
  класс NumberToWord {private static Map & lt; Integer, String & gt;  numbers = new HashMap & lt; Integer, String & gt; ();  private static Set & lt; Integer & gt;  numberSet = new TreeSet & lt; Integer & gt; (новый Comparator & lt; Integer & gt; () {public int compare (Integer o1, Integer o2) {return o2 - o1;}});  static {init ();  numberSet.addAll (numbers.keySet ());  } public static void main (String [] args) {System.out.println (getNumberInWord (1898765));  } / * * преобразование положительных чисел в число слов формата & gt;  0 only * / static String getNumberInWord (int number) {StringBuilder word = new StringBuilder ();  for (Integer n: numberSet) {if (число & gt; 0 & amp; & amp; номер & gt; = n) {int div = число / n;  String strNum = numbers.get (div);  if (strNum == null) {word.append (getNumberInWord (div));  } // для менее 100, нам не нужно говорить 1, если (strNum! = null & amp; & amp; (div & gt; 1 || n & gt; 100)) word.append (strNum + "");  word.append (numbers.get (n) + "");  число = число% n;  }} return word.toString ();  } static void init () {numbers.put (0, "Zero");  numbers.put (1, «One»);  numbers.put (2, «Two»);  numbers.put (3, «Three»);  numbers.put (4, "Four");  numbers.put (5, «Five»);  numbers.put (6, "Six");  numbers.put (7, «Семь»);  numbers.put (8, "Eight");  numbers.put (9, «Девять»);  numbers.put (10, «Ten»);  numbers.put (11, «Одиннадцать»);  numbers.put (12, «Двенадцать»);  numbers.put (13, «Тринадцать»);  numbers.put (14, «Четырнадцать»);  numbers.put (15, «Пятнадцать»);  numbers.put (16, "шестнадцать");  numbers.put (17, «Семнадцать»);  numbers.put (18, «восемьдесят»);  numbers.put (19, «девятнадцать»);  numbers.put (20, "Двадцать");  numbers.put (30, «Тридцать»);  numbers.put (40, «Сорок»);  numbers.put (50, «Пятьдесят»);  numbers.put (60, "Sixty");  numbers.put (70, «Семьдесят»);  numbers.put (80, "Eighty");  numbers.put (90, "Ninty");  numbers.put (100, «Сто»);  numbers.put (1000, «Thousand»);  numbers.put (1000000, «Million»);  numbers.put (100000000, «Billion»);  }}  
0
ответ дан Stephen Rauch 16 August 2018 в 00:47
поделиться

Возможно, вам это больше не нужно, но я недавно написал класс java для этого. По-видимому, Яник Рочон сделал что-то подобное. Он преобразует числа до 999 Novemdecillion (999 * 10 ^ 60). Это могло бы сделать больше, если бы я знал, что произошло после Novemdecillion, но я готов был бы поспорить, что это не нужно. Просто введите число как строку в центах. Вывод также грамматически корректен.

Вот ссылка на Bitbucket Repo

0
ответ дан Steven Leimberg 16 August 2018 в 00:47
поделиться
3
ответ дан Sudeepta 16 August 2018 в 00:47
поделиться
  пакет it.tommasoresti.facebook;  class NumbersToWords {private static final Строка ZERO = "ноль";  private static String [] oneToNine = {«один», «два», «три», «четыре», «пять», «шесть», «семь», «высота», «девять»};  частная статическая строка [] tenToNinteen = {«десять», «одиннадцать», «двенадцать», «тринадцать», «четырнадцать», «пятнадцать», «шестнадцать», «семнадцать», «восемнадцать», «девятнадцать»};  частная статическая строка [] десятки = {«десять», «двадцать», «тридцать», «сорок», «пятьдесят», «шестьдесят», «семьдесят», «восемьдесят», «девяносто»};  public static String solution (int number) {if (number == 0) return ZERO;  return generate (number) .trim ();  } public static String generate (int number) {if (number & gt; = 1000000000) {return generate (число / 1000000000) + «миллиард» + генерировать (число% 1000000000);  } else if (number & gt; = 1000000) {return generate (число / 1000000) + "млн." + сгенерировать (число% 1000000);  } else if (number & gt; = 1000) {return generate (число / 1000) + "тыс." + сгенерировать (число% 1000);  } else if (number & gt; = 100) {return generate (число / 100) + "сто" + сгенерировать (число% 100);  } return generate1To99 (число);  } private static String generate1To99 (int number) {if (number == 0) return "";  если (число & lt; = 9) возвращает oneToNine [число - 1];  else if (число & lt; = 19) возвращает tenToNinteen [число% 10];  else {вернуть десятки [число / 10 - 1] + "" + generate1To99 (число% 10);  }}}  

Test

  @Test public void given_a_complex_number () throws Exception {assertThat (решение (1234567890), есть («один миллиард двести тридцать  четыре миллиона пятьсот шестьдесят семь тысяч высот сто девяносто "));  }  
2
ответ дан Tommaso Resti 16 August 2018 в 00:47
поделиться
  import java.util. *;  public class NumberToWord {public void numberToword (int n, String ch) {String one [] = {"", "one", "two", "three", "four", "five", "six", "seven  «восемь», «девятка», «десять», «одиннадцать», «двенадцать», «тринадцать», «четырнадцать», «пятнадцать», «шестнадцать», «семнадцать», «восемнадцать», «девятнадцать»)  ;  Строка десять [] = {"", "", "двадцать", "тридцать", "сорок", "пятьдесят", "шестьдесят", "семьдесят", "восемьдесят", "девяносто"};  если (n & gt; 19) {System.out.print (десять [n / 10] + "" + one [n% 10]);  } else {System.out.print (один [n]);  } if (n & gt; 0) {System.out.print (ch);  }} public static void main (String [] args) {int n = 0;  Сканер s = новый сканер (System.in);  System.out.print ("Введите целочисленное число:");  n = s.nextInt ();  if (n & lt; = 0) {System.out.print ("Введите числа больше 0");  } else {NumberToWord a = new NumberToWord ();  System.out.print («После номера преобразования в словах:»);  a.numberToword ((n / 1000000000), «Сто»);  a.numberToword ((n / 10000000)% 100, «crore»);  a.numberToword (((n / 100000)% 100), «lakh»);  a.numberToword (((n / 1000)% 100), «тысяч»);  a.numberToword (((n / 100)% 10), «сто»);  a.numberToword ((n% 100), "");  }}}  
0
ответ дан user 16 August 2018 в 00:47
поделиться
55
ответ дан Yanick Rochon 16 August 2018 в 00:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: