In this tutorial we will look at how to improve the code in the Temperature Converter App for Android from the previous tutorial. If you have tested the app yourself, you might notice that the app works great when the user enters only numbers. However, what happens when a user enters nothing at all? The app will crash!
We will look at how to prevent such errors from occurring so that the app won’t crash if the user accidentally (or deliberately) enters non-numeric values or nothing at all – this is something known as data validation. This is what the app will look like…

The code below is from the same app but has some new code added to it. All of the code is commented, explaining what each new line does. None of the design elements (buttons, labels, text fields) have been changed in any way.
using Android.App; using Android.Widget; using Android.OS; // need to add using System; to access the Math functions using System; namespace TemperatureConverter { [Activity (Label = "TemperatureConverter", MainLauncher = true, Icon = "@mipmap/icon")] public class MainActivity : Activity { Button cButton; Button fButton; TextView resultTextView; EditText temperatureTextEdit; protected override void OnCreate (Bundle savedInstanceState) { base.OnCreate (savedInstanceState); // Set our view from the "main" layout resource SetContentView (Resource.Layout.Main); cButton = FindViewById<Button> (TemperatureConverter.Resource.Id.cButton); fButton = FindViewById<Button> (TemperatureConverter.Resource.Id.fButton); resultTextView = FindViewById<TextView> (TemperatureConverter.Resource.Id.resultTextView); temperatureTextEdit = FindViewById<EditText> (TemperatureConverter.Resource.Id.temperatureTextEdit); cButton.Click += CButton_Click; fButton.Click += FButton_Click; } void FButton_Click (object sender, System.EventArgs e) { // Get the temperature entered and store as a string string tempString = temperatureTextEdit.Text; // Check if the string is empty if (string.IsNullOrEmpty (tempString) == false) { // If string is not empty, create a float variable to store the temperature value float temp; // Use TryParse method to store the value in the temp variable if value is numeric bool isNumeric = float.TryParse (tempString, out temp); // Check if tempString value is numeric and if so, use it in the conversion formula if (isNumeric == true) { // Create fResult variable which stores result of C to F conversion float fResult = temp * 1.8f + 32f; // Change fResult to decimal data type and round to 2 decimal places decimal fResultRounded = Math.Round ((decimal)fResult, 2); // Display result on the screen resultTextView.Text = fResultRounded.ToString () + " degrees Fahrenheit"; } // If tempString is not numeric, ask user to enter numbers only else { resultTextView.Text = "Enter numbers only"; } // If nothing was entered by user, ask user to enter a number } else { resultTextView.Text = "Enter a number to convert"; } } void CButton_Click (object sender, System.EventArgs e) { // Get the temperature entered and store as a string string tempString = temperatureTextEdit.Text; // Check if the string is empty if (string.IsNullOrEmpty (tempString) == false) { // If string is not empty, create a float variable to store the temperature value float temp; // Use TryParse method to store the value in the temp variable if value is numeric bool isNumeric = float.TryParse(tempString, out temp); // Check if tempString value is numeric and if so, use it in the conversion formula if (isNumeric == true) { // Create cResult variable which stores result of F to C conversion float cResult = (temp - 32f) / 1.8f; // Change cResult to decimal data type and round to 2 decimal places decimal cResultRounded = Math.Round((decimal)cResult, 2); // Display result on the screen resultTextView.Text = cResultRounded.ToString () + " degrees Celsius"; } // If tempString is not numeric, ask user to enter numbers only else { resultTextView.Text = "Enter numbers only"; } } // If nothing was entered by user, ask user to enter a number else { resultTextView.Text = "Enter a number to convert"; } } } }