Red de conocimiento de divisas - Consulta hotelera - Capital 5080 yuanes Contabilidad

Capital 5080 yuanes Contabilidad

/**

*?Propósito del plan:

*?Recibir un número de la línea de comando y convertirlo a una cantidad china en mayúscula.

*?¿Cómo qué? 123,45?->? Ciento veintitrés dólares y cuarenta y cinco dólares.

*?@Autor? Base de datos del genoma

*

* ¿Realmente deficiente? El algoritmo en el programa no está claramente comentado, pero parece que sí.

*? Un poco difícil y poco legible. Además, muchos programas todavía tienen muchos errores que pueden detectarse a voluntad.

*?Así que decidí reescribir este programa e intentar eliminar errores innecesarios. ¿Este proceso

*? No utilicé ningún algoritmo sofisticado, solo usé algunas clases en la biblioteca de clases de Java, como expresiones regulares.

*?

*/

¿Público? ¿clase? ¿Trans2RMB? {

/**

? *?La viabilidad del plan de prueba

? *?@param? ¿Un nombre de parámetro

? */

¿Público? ¿Electricidad estática? ¿Vacío? principal(Cadena[]?args)? {

System.out.println("\n -

Trans2RMB?t2r?=?new?trans 2 RMB();

Cadena? s? =?t2r . clean zero(t2r . split num(t2r . round string(t2r . getnum())));

//?Si la cadena convertida es una cadena vacía, la pantalla no mostrará

Si (!"".equal to (s)). {

System.out.println("Después de convertir al chino: "?+?s); p>

p>

}

sistema . println(" \ n-"); /p>

?*?Recibe un número de la línea de comando y llama al método ?checkNum()? para verificarlo y devolver el valor correspondiente.

¿Privado? {

String? =?null

System.out.println("Ingrese un número (con una precisión de dos decimales):");

//?Ingrese este número de punto flotante desde la línea de comando

java.util.Scanner? =?new?Java.util.scanner(system.in);

s.

//?Cerrar el escáner

scanner .

//?Determinar si la entrada del usuario es legal. p> ///?Si es legal, devuelve este valor; si es ilegal, devuelve "0"

if(this.checkNum(s))?

}? ¿Y si? {

¿Devolver?";

}

}

/**

? *? Para determinar si los datos ingresados ​​por el usuario son válidos, el usuario solo puede ingresar números mayores que cero

?

?*?@¿Devolver? ¿verdadero si la entrada del usuario es válida?

¿Privado s)? {

//?Si hay caracteres no numéricos en el número ingresado por el usuario, será considerado como datos ilegales y se devolverá?

¿Probar? {

¿Flotando? ¿F? =?float . valor de(s);

//?Si este número es menor que cero, se considera dato ilegal. ¿devolver? Incorrecto

Si (f?<?0)?{

System.out.println("Datos ilegales, ¡compruébelo!");

¿devolver? Falso;

}¿Algo más? {

¿Volver? ¿Real;

}

}?¿Atrapar? (NumberFormatException? e)? {

System.out.println("¡Datos ilegales, verifíquelos!");

¿Regresión? Falso;

}

}

/**

? *?Dividir el número ingresado por el usuario por el punto decimal, ¿llamar? formatonumero()? ¿Método

? *? Convierta la cantidad china correspondiente en forma de capital.

? *?Nota: ¿Se debe pasar el número ingresado? cadena redonda()? El método ha sido redondeado.

? *?@param? ¿s? ¿Línea

? *?@¿devolver? Cadena china convertida en mayúsculas.

? */

¿Privado? ¿Cadena? splitNum(cadena?s)? {

//?Si se pasa una cadena vacía, se seguirá devolviendo la cadena vacía.

Si("".Equal(s)). {

¿Volver? "";

}

//? Divide esta cadena por el punto decimal.

int? ¿índice? =?s.indexOf(" . ");

//?Intercepta y convierte la parte entera del número.

¿Cadena? ¿Solo int? =?s.substring(0, índice);

¿Cadena? parte1? =?this.numFormat(1, into only);

//?Intercepta y convierte la parte decimal de este número.

¿Cadena? ¿Solo pequeño? =?s.substring(index?+?1);

Cadena? ¿Segunda parte? =?this.numFormat(2, solo pequeño);

//?Coloque la parte entera y la parte decimal convertidas nuevamente en una nueva cadena.

¿Cadena? ¿noticias? =?parte1? +?Parte 2;

¿Regresar? Noticias;

}

/**

? *? Redondea el número pasado.

? *?@param? ¿s? ¿Cadena? Número ingresado desde la línea de comando.

? *?@¿devolver? ¿Nuevo valor después del redondeo

? */

¿Privado? ¿Cadena? cadena redonda (cadena? s)? {

//?Si se pasa una cadena vacía, se seguirá devolviendo la cadena vacía.

Si("".Equal(s)). {

¿Volver? "";

}

//?¿Convertir este número a? ¿Doble? Escribe y redondea.

¿Doble? ¿d? =?double . parse double(s);

//?Esta operación opera con dos decimales.

d? =?(d?*?100?+?0.5)?/?100;

//?Will. ¿d? ¿Formatos? =?¿Nuevo? Formato decimal de Java ("# # 0,000"). Formato (d);

//? Divide esta cadena por el punto decimal.

int? ¿índice? =?s.indexOf(" . ");

//?La parte entera de este número.

¿Cadena? ¿Solo int? =?s.substring(0, exponent);

//?La longitud máxima del valor especificado solo puede alcanzar billones de unidades; de lo contrario, ¿regresar? "0"

if(into only . length()?& gt?13)?{

System.out.println("¡Los datos de entrada son demasiado grandes! (El número entero la parte es de hasta 13 bits)");

¿Volver? "";

}

//?La parte decimal de este número.

¿Cadena? ¿Solo pequeño? =?s.substring(index?+?1);

//?Si la parte decimal es mayor que dos dígitos, solo se truncan los dos dígitos después del punto decimal.

if(smallOnly.length()?& gt?2)?{

¿Cadena? ¿Pequeña forma redonda? =?smallOnly.substring(0, 2);

//?Vuelva a juntar la parte entera y la parte decimal recién truncada para formar esta cadena.

s? =?intOnly? +?"."? +? Pequeña forma redonda;

}

¿Volver? s;

}

/**

? *?Convierta el número de la persona que llama a una cantidad china en mayúsculas.

? *?@param? ¿bandera? int? Bit de bandera, 1? Indica la parte entera de la conversión, ¿0? ¿Representa la parte decimal de la conversión

? *?@param? ¿s? ¿Cadena? ¿Cadena a convertir

? *?@¿devolver? Importe en RMB en mayúsculas con unidad.

? */

¿Privado? ¿Cadena? numFormat(int?bandera,?cadena?s)? {

int? ¿longitud? =?s.longitud().

//?Forma de moneda en mayúsculas

¿Cadena? letra grande[]? =?{"cero"? ¿"Uno" "eh"? "tres"? "jefe"? ¿"Wu"? ¿"Lu"? "gas"? "ocho"? "Nueve"};

//?Unidad monetaria

¿Cadena? unidad[]? =?{"元"? ¿"Recogerlo"? "Centenar"? "mil"? "Diez mil"?

//?De cien mil a diez millones

¿"Recogerlo"? "Centenar"? "Dinero",

//? Miles de millones a billones

¿"Miles de millones"? ¿"Recogerlo"? "Centenar"? "mil"? "Diez mil"};

¿Cadena? Pequeño[]? =?{"fen",? "Angle" };

//?Se utiliza para almacenar la nueva cadena convertida.

¿Cadena? ¿noticias? =?"";

//?Sustitución posición por posición de las formas de capital de China

for(int?i?=?0;?i?<?length;? i? ++)?{

If (flag?==?1)?{

//?Convertir la parte entera a mayúsculas chinas (con unidades)

¿Noticias? =?Noticias? +?letragrande[s.charAt(i)? -?48]?+?unidad[s de longitud? -?¿I? -?1];

}?¿En caso contrario? if (flag?==?2)?{

//?Convertir parte decimal (con unidad)

¿Novedades? =?Noticias? +?bigLetter[s.charAt(i)? -?48]?+?pequeño [¿largo? -?¿I? -?1];

}

}

¿Volver? Noticias;

}

/**

? *?Mejorar la forma de capital china convertida y limpiar las palabras.

? *?Los ceros adicionales en la cadena hacen que esta cadena sea aún más impresionante.

? *?Nota: ¿Se debe pasar el número ingresado? númerodividido()? ¿Cómo afrontar esta palabra

? *?Las cadenas deben expresarse en letras mayúsculas chinas.

? *?@param? ¿s? ¿Cadena? La cadena convertida.

? *?@¿devolver? ¿Cuerdas mejoradas

? */

¿Privado? ¿Cadena? cleanZero(cadena?s)? {

//?Si se pasa una cadena vacía, se seguirá devolviendo la cadena vacía.

Si("".Equal(s)). {

¿Volver? "";

}

//?¿Qué pasa si el usuario empieza a escribir mucho? 0? Elimine el "cero" adicional delante de la cadena para que parezca más idiomática.

mientras(s.charAt(0)?==?zero')? {

//? estará en la cadena. "cero"? y se retira su unidad correspondiente.

s? =?s . substring(2);

//?¿Qué pasa si el usuario solo ingresa la primera vez? 0, ¿solo se devuelve uno? "Cero"

if(s.length()?==?0)?{

¿Regresar? "Zero";

}

}

//?Cuando hay varios "ceros" en una cadena, solo lea un "cero" e ignore los adicionales. unidades.

/*?Debido a que mi investigación sobre algoritmos es demasiado pobre, solo puedo usar cuatro expresiones regulares para realizar la conversión. ¿No te importa, gambas? */

¿Cadena? expresión regular1[]? =?{"cero mil",? ¿"Cero cien"? "selección cero"};

¿Cadena? expresión regular2[]? =?{"000 millones",? ¿"Cero millones"? "cero yuanes"};

¿Cadena? expresión regular3[]? =?{"mil millones",? "Diez mil"? "elemento"};

¿Cadena? expresión regular4[]? =?{"ángulo de cero grados",? "zero"};

//?¿Primera ronda de conversión? ¿"Cero mil"? Cadenas como "cero cien" y "cero elección" se reemplazan por "cero"

for(int?i?=?0;?i?<?3;?i?++ )?{

s? =?s.replaceAll(regex1[i],?"zero");

}

//?¿Considere la segunda ronda de conversión? "Cero mil millones", "Cero mil millones", "Cero yuanes", etc.

//?En algunos casos, las unidades de "100 millones", "10,000" y "yuanes" no se pueden guardar y es necesario guardarlas.

for(int?i?=?0;?i?<?3;?i?++)?{

//?Después de la primera ronda de conversión, tal vez Habrá muchos ceros apilados uno encima del otro.

//?Convierte muchos ceros repetidos en unos.

s? =?S.replaceAll ("cero cero ","cero");

s? =?S.replaceAll ("cero cero ","cero");

s? =?s.replaceAll(regex2[i],?regex 3[I]);

}

//?La tercera ronda de conversión omite "ángulo cero" y "ángulo cero". punto" "Cadena.

for(int?i?=?0;?i?<?2;?i?++)?{

s? =?s.replaceAll(regex4[i],?"");

}

//?Cuando todo lo que esté entre "diez mil" y "cien millones" es Cuando " Se utiliza "cero", se ignora la unidad de "cien millones" y sólo se conserva "cien millones".

s? =?S.replaceAll("mil millones","millones");

¿Devolver? s;

}

}

上篇: ¿Cómo se pronuncia molly? ¿Cómo se escribe molly? 下篇: ¿Cuánto vale 1 dólar neozelandés en yuan chino?
Artículos populares