Heim > Java > javaLernprogramm > Bietet die Standard-Mathematikbibliothek von Java eine Funktion zum Konvertieren von Zahlen in ihre Wortdarstellungen?

Bietet die Standard-Mathematikbibliothek von Java eine Funktion zum Konvertieren von Zahlen in ihre Wortdarstellungen?

Mary-Kate Olsen
Freigeben: 2024-12-30 11:14:19
Original
397 Leute haben es durchsucht

Does Java's standard math library offer a function to convert numbers to their word representations?

So konvertieren Sie Zahlen in Wörter in Java

Hintergrund

Derzeit ist ein rudimentärer Mechanismus vorhanden, um Zahlen mithilfe statischer Arrays und in Wörter umzuwandeln Übersetzen Sie sie basierend auf der Größe der Zahl in einen englischen Text. Allerdings stößt dieser Ansatz bei außergewöhnlich großen Zahlen auf Herausforderungen.

<br>10183 = Zehntausendeinhundertdreiundachtzig<br>90 = Neunzig<br>5888 = Fünftausendachthundertachtzig acht<br>

Frage

Gibt es in einer der Mathematikbibliotheken eine einfache Funktion, die für diesen Zweck verwendet werden kann?

Antwort

Hier ist der Code, ich glaube nicht, dass es in SE irgendeine Methode gibt.

Im Wesentlichen wandelt eine Zahl in eine Zeichenfolge um, analysiert sie und verknüpft sie mit ihrem Gewicht.

Zum Beispiel

<br>1000<br>< /pre></p>
<p>1 wird als Tausenderposition behandelt und 1 wird auf „Eins“ und Tausender fällig abgebildet an seine Position.</p>
<p>Hier ist der Code von der Website:</p>
<p><strong>Englisch</strong></p>
<p><pre class="brush:php;toolbar:false"><br>import java.text.DecimalFormat ;</p>
<p>öffentliche Klasse EnglishNumberToWords {</p>
<p>privates statisches Finale String[] tensNames = {</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">"",
" ten",
" twenty",
" thirty",
" forty",
" fifty",
" sixty",
" seventy",
" eighty",
" ninety"
Nach dem Login kopieren

};

private static final String[] numNames = {

"",
" one",
" two",
" three",
" four",
" five",
" six",
" seven",
" eight",
" nine",
" ten",
" eleven",
" twelve",
" thirteen",
" fourteen",
" fifteen",
" sixteen",
" seventeen",
" eighteen",
" nineteen"
Nach dem Login kopieren

};

private EnglishNumberToWords() {}

private statische Zeichenfolge konvertierenLessThanOneThousand(int number) {

String soFar;

if (number % 100 < 20){
  soFar = numNames[number % 100];
  number /= 100;
}
else {
  soFar = numNames[number % 10];
  number /= 10;

  soFar = tensNames[number % 10] + soFar;
  number /= 10;
}
if (number == 0) return soFar;
return numNames[number] + " hundred" + soFar;
Nach dem Login kopieren

}

public static String Convert(long number) {

// 0 to 999 999 999 999
if (number == 0) { return "zero"; }

String snumber = Long.toString(number);

// pad with "0"
String mask = "000000000000";
DecimalFormat df = new DecimalFormat(mask);
snumber = df.format(number);

// XXXnnnnnnnnn
int billions = Integer.parseInt(snumber.substring(0,3));
// nnnXXXnnnnnn
int millions  = Integer.parseInt(snumber.substring(3,6));
// nnnnnnXXXnnn
int hundredThousands = Integer.parseInt(snumber.substring(6,9));
// nnnnnnnnnXXX
int thousands = Integer.parseInt(snumber.substring(9,12));

String tradBillions;
switch (billions) {
case 0:
  tradBillions = "";
  break;
case 1 :
  tradBillions = convertLessThanOneThousand(billions)
  + " billion ";
  break;
default :
  tradBillions = convertLessThanOneThousand(billions)
  + " billion ";
}
String result =  tradBillions;

String tradMillions;
switch (millions) {
case 0:
  tradMillions = "";
  break;
case 1 :
  tradMillions = convertLessThanOneThousand(millions)
     + " million ";
  break;
default :
  tradMillions = convertLessThanOneThousand(millions)
     + " million ";
}
result =  result + tradMillions;

String tradHundredThousands;
switch (hundredThousands) {
case 0:
  tradHundredThousands = "";
  break;
case 1 :
  tradHundredThousands = "one thousand ";
  break;
default :
  tradHundredThousands = convertLessThanOneThousand(hundredThousands)
     + " thousand ";
}
result =  result + tradHundredThousands;

String tradThousand;
tradThousand = convertLessThanOneThousand(thousands);
result =  result + tradThousand;

// remove extra spaces!
return result.replaceAll("^\s+", "").replaceAll("\b\s{2,}\b", " ");
Nach dem Login kopieren

}

/**

  • Testen
  • @param args
    */

public static void main(String[] args) {

System.out.println("*** " + EnglishNumberToWords.convert(0));
System.out.println("*** " + EnglishNumberToWords.convert(1));
System.out.println("*** " + EnglishNumberToWords.convert(16));
System.out.println("*** " + EnglishNumberToWords.convert(100));
System.out.println("*** " + EnglishNumberToWords.convert(118));
System.out.println("*** " + EnglishNumberToWords.convert(200));
System.out.println("*** " + EnglishNumberToWords.convert(219));
System.out.println("*** " + EnglishNumberToWords.convert(800));
System.out.println("*** " + EnglishNumberToWords.convert(801));
System.out.println("*** " + EnglishNumberToWords.convert(1316));
System.out.println("*** " + EnglishNumberToWords.convert(1000000));
System.out.println("*** " + EnglishNumberToWords.convert(2000000));
System.out.println("*** " + EnglishNumberToWords.convert(3000200));
System.out.println("*** " + EnglishNumberToWords.convert(700000));
System.out.println("*** " + EnglishNumberToWords.convert(9000000));
System.out.println("*** " + EnglishNumberToWords.convert(9001000));
System.out.println("*** " + EnglishNumberToWords.convert(123456789));
System.out.println("*** " + EnglishNumberToWords.convert(2147483647));
System.out.println("*** " + EnglishNumberToWords.convert(3000000010L));

/*
 *** zero
 *** one
 *** sixteen
 *** one hundred
 *** one hundred eighteen
 *** two hundred
 *** two hundred nineteen
 *** eight hundred
 *** eight hundred one
 *** one thousand three hundred sixteen
 *** one million
 *** two millions
 *** three millions two hundred
 *** seven hundred thousand
 *** nine millions
 *** nine millions one thousand
 *** one hundred twenty three millions four hundred
 **      fifty six thousand seven hundred eighty nine
 *** two billion one hundred forty seven millions
 **      four hundred eighty three thousand six hundred forty seven
 *** three billion ten
 **/
Nach dem Login kopieren

}
}

Français
ganz anders als die englische Version, aber Französisch schon viel schwieriger!

<br>Paket com.rgagnon.howto;</p>
<p>import java.text.*;</p>
<p>class FrenchNumberToWords {<br> private static final String[] dizaineNames = {</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">"",
"",
"vingt",
"trente",
"quarante",
"cinquante",
"soixante",
"soixante",
"quatre-vingt",
"quatre-vingt"
Nach dem Login kopieren

} ;

private static final String[] uniteNames1 = {

"",
"un",
"deux",
"trois",
"quatre",
"cinq",
"six",
"sept",
"huit",
"neuf",
"dix",
"onze",
"douze",
"treize",
"quatorze",
"quinze",
"seize",
"dix-sept",
"dix-huit",
"dix-neuf"
Nach dem Login kopieren

};

private static final String[] uniteNames2 = {

"",
"",
"deux",
"trois",
"quatre",
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonBietet die Standard-Mathematikbibliothek von Java eine Funktion zum Konvertieren von Zahlen in ihre Wortdarstellungen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Vorheriger Artikel:Wie gehe ich mit geprüften Ausnahmen in Java 8 Lambda-Ausdrücken um? Nächster Artikel:Wie verfasse und sende ich HTTP-Anfragen in Java mit HttpUrlConnection?
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Aktuelle Ausgaben
verwandte Themen
Mehr>
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage