Roman Numeral Converter es una aplicación a través de la cual podemos convertir un número decimal a su correspondiente número romano o un número romano a su correspondiente número decimal en el rango de 1 a 3999. El usuario ingresará un número decimal y al hacer clic en convertir a romano botón numérico, el número ingresado se convertirá en su número romano correspondiente y si el usuario ingresa un número romano, al hacer clic en convertir a decimal, el número ingresado se convertirá en su número decimal correspondiente. En este artículo, seremos convertidores de números romanos en Android Studio usando Kotlin y XML.
Requisito previo:
- Conversión de números decimales entre 1 y 3999 a números romanos
- Conversión de números romanos a decimales entre 1 y 3999
Implementación paso a paso
Paso 1: crear un nuevo proyecto
Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio . Tenga en cuenta que seleccione Kotlin como lenguaje de programación.
Paso 2: Trabajar con el archivo build.gradle(Module)
Debe aplicar el complemento kotlin-android-extensions en el módulo build.gradle de la aplicación como este
plugins { id 'com.android.application' id 'kotlin-android' id 'kotlin-android-extensions' }
Paso 3: trabajar con el archivo activity_main.xml
Vaya a la aplicación > res > diseño > actividad_principal.xml y agregue el siguiente código a ese archivo. A continuación se muestra el código para el archivo activity_main.xm l.
XML
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="20dp" android:text="Roman Numeral Convertor" android:textSize="30sp" android:textStyle="bold" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="50dp" android:text="Decimal to Roman Numeral" android:textSize="20sp" android:textStyle="bold" /> <EditText android:id="@+id/decimal_et" android:layout_width="150dp" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="10dp"/> <Button android:id="@+id/convert_to_roman_numeral" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="10dp" android:backgroundTint="#A1F6EE" android:text="Convert to roman numeral" /> <TextView android:id="@+id/roman_numeral_tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:textSize="20sp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="50dp" android:text="Roman to Decimal Number" android:textSize="20sp" android:textStyle="bold" /> <EditText android:id="@+id/roman_et" android:layout_width="150dp" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="10dp" android:capitalize="characters" /> <Button android:id="@+id/convert_to_decimal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="10dp" android:backgroundTint="#A1F6EE" android:text="Convert to decimal " /> <TextView android:id="@+id/decimal_tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:textSize="20sp" /> </LinearLayout>
Después de escribir tanto código, nuestra interfaz de usuario se ve así:
Paso 4: trabajar con el archivo MainActivity.kt
Vaya al archivo MainActivity.kt y consulte el siguiente código. A continuación se muestra el código del archivo MainActivity.kt . Se agregan comentarios dentro del código para comprender el código con más detalle.
Kotlin
import android.support.v7.app.AppCompatActivity import android.os.Bundle import android.widget.Toast import kotlinx.android.synthetic.main.activity_main.* class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // Decimal to Roman convertor convert_to_roman_numeral.setOnClickListener { // check if decimal_et.text is empty or not. if (decimal_et.text.isNotEmpty()) { val number = decimal_et.text.toString().toInt() if (number <= 3999) { // int_to_Roman function convert a decimal // number to its corresponding Roman number. val roman = decimal_to_Roman(number) roman_numeral_tv.text = roman.toString() } else { Toast.makeText(this, "please enter a number in range between 1 to 3999",Toast.LENGTH_SHORT).show() } } else { Toast.makeText(this, "please enter a number ", Toast.LENGTH_SHORT).show() } } // Roman to Decimal convertor. convert_to_decimal.setOnClickListener { // check if roman_et.text is empty or not. if (roman_et.text.isNotEmpty()) { val roman = roman_et.text.toString() // RomanToDecimal function convert a Roman number // to its corresponding decimal number. decimal_tv.text = RomanToDecimal(roman).toString() } else { Toast.makeText(this, "please enter a Roman Numeral ", Toast.LENGTH_SHORT).show() } } } private fun decimal_to_Roman(num: Int): Any { val m = arrayOf("", "M", "MM", "MMM") val c = arrayOf( "", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM" ) val x = arrayOf( "", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC" ) val i = arrayOf( "", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX" ) // Converting to roman val thousands = m[num / 1000] val hundreds = c[num % 1000 / 100] val tens = x[num % 100 / 10] val ones = i[num % 10] return thousands + hundreds + tens + ones } fun value(r: Char): Int { if (r == 'I') return 1 if (r == 'V') return 5 if (r == 'X') return 10 if (r == 'L') return 50 if (r == 'C') return 100 if (r == 'D') return 500 return if (r == 'M') 1000 else -1 } // Finds decimal value of a // given roman numeral fun RomanToDecimal(str: String): Int { // Initialize result var res = 0 var i = 0 while (i < str.length) { // Getting value of symbol s[i] val s1 = value(str[i]) // Getting value of symbol s[i+1] if (i + 1 < str.length) { val s2 = value(str[i + 1]) // Comparing both values if (s1 >= s2) { // Value of current symbol // is greater or equalto // the next symbol res = res + s1 } else { // Value of current symbol is // less than the next symbol res = res + s2 - s1 i++ } } else { res = res + s1 } i++ } return res } }
Producción:
Publicación traducida automáticamente
Artículo escrito por nirajgusain5 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA