Skip to main content

Check if a given string is a valid number

Here given code implementation process.

/*
    Java Program for
    Check if a given string is a valid number
*/
public class Numerical
{
	public boolean isValidNumber(String num)
	{
		int n = num.length();
		int i = 0;
		int j = n - 1;
		if (n == 0)
		{
			// When string is empty
			return false;
		}
		// Trim the white space from beginning position.
		while (i < n && num.charAt(i) == ' ')
		{
			i++;
		}
		// Trim the white space from ending position.
		while (j >= 0 && num.charAt(j) == ' ')
		{
			j--;
		}
		if (j < i)
		{
			// When string contain white space only
			return false;
		}
		if (i == j && !(num.charAt(i) >= '0' && 
                        num.charAt(i) <= '9'))
		{
			// When string contains single character. 
			// And this is not a numeric value.
			return false;
		}
		if (num.charAt(i) == '+' || 
            num.charAt(i) == '-' || 
            num.charAt(i) == '.' || 
            num.charAt(i) >= '0' && num.charAt(i) <= '9')
		{
			// When number start with + - and .
			// This three are suitable for start a number.
			if (num.charAt(i) == '-' || num.charAt(i) == '+')
			{
				// + and - at beginning
				i++;
			}
			if (i <= j && num.charAt(i) == '-' || 
                num.charAt(i) == '+')
			{
				if (num.charAt(i) == num.charAt(i - 1))
				{
					// When like this ++123 or --123
					// ++ are used to increment and -- use to decrement
					return false;
				}
				i++;
			}
			boolean flagDot = false;
			boolean flagE = false;
			// Check intermediate of i to j
			while (i < j)
			{
				if (num.charAt(i) >= '0' && num.charAt(i) <= '9')
				{
					// When position of i contain valid numeric digit
					i++;
				}
				else
				{
					if (num.charAt(i) == '.')
					{
						if (flagDot == true || 
                            flagE == true || 
                            (i > 0 && !((num.charAt(i - 1) == ' ') ||
                                        (num.charAt(i - 1) >= '0' && 
                                         num.charAt(i - 1) <= '9'))))
						{
							// Fail case 
							// ➀ When dot appears more than once.
							// ➁ Exponent has no digits.
							return false;
						}
						// When dot is valid
						flagDot = true;
					}
					else if (num.charAt(i) == 'e')
					{
						if (flagE == true || 
                            i + 1 >= n || 
                            !(num.charAt(i - 1) >= '0' && 
                              num.charAt(i - 1) <= '9'))
						{
							// Fail case 
							// ➀ When e appears more than once.
							// ➁ Exponent is last digit in number.
							// ➂ Exponent has previous digit is not number.
							return false;
						}
						if (i + 1 <= j && 
                            (num.charAt(i + 1) == '-' || 
                             num.charAt(i + 1) == '+'))
						{
							i++;
						}
						flagE = true;
					}
					else
					{
						return false;
					}
					i++;
				}
			}
			return true;
		}
		return false;
	}
	public void isNumber(String num)
	{
		if (isValidNumber(num))
		{
			System.out.println(" Given (" + num + ") is valid number");
		}
		else
		{
			System.out.println(" Given (" + num + ") is not valid number");
		}
	}
	public static void main(String[] args)
	{
		Numerical task = new Numerical();
		// 10e2
		task.isNumber("10e2");
		// num = --134
		// Result = no
		task.isNumber("  --134");
		// num = -+123 = -123
		// Result = yes
		task.isNumber("  -+123 ");
		// num = .4 = 0.4
		// Result = yes
		task.isNumber("  .4 ");
		// num = 000.4e-12 = 4e-13
		// Result = yes
		task.isNumber(" 000.4e-12 ");
		// num = 2e1.02
		// Result = No
		task.isNumber(" 2e1.02 ");
	}
}

Output

 Given (10e2) is valid number
 Given (  --134) is not valid number
 Given (  -+123 ) is valid number
 Given (  .4 ) is valid number
 Given ( 000.4e-12 ) is valid number
 Given ( 2e1.02 ) is not valid number
// Include header file
#include <iostream>
#include <string>

using namespace std;
/*
    C++ Program for
    Check if a given string is a valid number
*/
class Numerical
{
	public: bool isValidNumber(string num)
	{
		int n = num.length();
		int i = 0;
		int j = n - 1;
		if (n == 0)
		{
			// When string is empty
			return false;
		}
		// Trim the white space from beginning position.
		while (i < n && num[i] == ' ')
		{
			i++;
		}
		// Trim the white space from ending position.
		while (j >= 0 && num[j] == ' ')
		{
			j--;
		}
		if (j < i)
		{
			// When string contain white space only
			return false;
		}
		if (i == j && !(num[i] >= '0' && num[i] <= '9'))
		{
			// When string contains single character. 
			// And this is not a numeric value.
			return false;
		}
		if (num[i] == '+' || 
            num[i] == '-' || 
            num[i] == '.' || 
            num[i] >= '0' && num[i] <= '9')
		{
			// When number start with + - and .
			// This three are suitable for start a number.
			if (num[i] == '-' || num[i] == '+')
			{
				// + and - at beginning
				i++;
			}
			if (i <= j && num[i] == '-' || num[i] == '+')
			{
				if (num[i] == num[i - 1])
				{
					// When like this ++123 or --123
					// ++ are used to increment and -- use to decrement
					return false;
				}
				i++;
			}
			bool flagDot = false;
			bool flagE = false;
			// Check intermediate of i to j
			while (i < j)
			{
				if (num[i] >= '0' && num[i] <= '9')
				{
					// When position of i contain valid numeric digit
					i++;
				}
				else
				{
					if (num[i] == '.')
					{
						if (flagDot == true || 
                            flagE == true || 
                            (i > 0 && !((num[i - 1] == ' ') || 
                                        (num[i - 1] >= '0' && 
                                         num[i - 1] <= '9'))))
						{
							// Fail case 
							// ➀ When dot appears more than once.
							// ➁ Exponent has no digits.
							return false;
						}
						// When dot is valid
						flagDot = true;
					}
					else if (num[i] == 'e')
					{
						if (flagE == true || 
                            i + 1 >= n || 
                            !(num[i - 1] >= '0' && 
                              num[i - 1] <= '9'))
						{
							// Fail case 
							// ➀ When e appears more than once.
							// ➁ Exponent is last digit in number.
							// ➂ Exponent has previous digit is not number.
							return false;
						}
						if (i + 1 <= j && 
                            (num[i + 1] == '-' || num[i + 1] == '+'))
						{
							i++;
						}
						flagE = true;
					}
					else
					{
						return false;
					}
					i++;
				}
			}
			return true;
		}
		return false;
	}
	void isNumber(string num)
	{
		if (this->isValidNumber(num))
		{
			cout << " Given (" << num << ") is valid number" << endl;
		}
		else
		{
			cout << " Given (" << num << ") is not valid number" << endl;
		}
	}
};
int main()
{
	Numerical *task = new Numerical();
	// 10e2
	task->isNumber("10e2");
	// num = --134
	// Result = no
	task->isNumber("  --134");
	// num = -+123 = -123
	// Result = yes
	task->isNumber("  -+123 ");
	// num = .4 = 0.4
	// Result = yes
	task->isNumber("  .4 ");
	// num = 000.4e-12 = 4e-13
	// Result = yes
	task->isNumber(" 000.4e-12 ");
	// num = 2e1.02
	// Result = No
	task->isNumber(" 2e1.02 ");
	return 0;
}

Output

 Given (10e2) is valid number
 Given (  --134) is not valid number
 Given (  -+123 ) is valid number
 Given (  .4 ) is valid number
 Given ( 000.4e-12 ) is valid number
 Given ( 2e1.02 ) is not valid number
// Include namespace system
using System;
/*
    Csharp Program for
    Check if a given string is a valid number
*/
public class Numerical
{
	public Boolean isValidNumber(String num)
	{
		int n = num.Length;
		int i = 0;
		int j = n - 1;
		if (n == 0)
		{
			// When string is empty
			return false;
		}
		// Trim the white space from beginning position.
		while (i < n && num[i] == ' ')
		{
			i++;
		}
		// Trim the white space from ending position.
		while (j >= 0 && num[j] == ' ')
		{
			j--;
		}
		if (j < i)
		{
			// When string contain white space only
			return false;
		}
		if (i == j && !(num[i] >= '0' && num[i] <= '9'))
		{
			// When string contains single character. 
			// And this is not a numeric value.
			return false;
		}
		if (num[i] == '+' || 
            num[i] == '-' || 
            num[i] == '.' || 
            num[i] >= '0' && num[i] <= '9')
		{
			// When number start with + - and .
			// This three are suitable for start a number.
			if (num[i] == '-' || num[i] == '+')
			{
				// + and - at beginning
				i++;
			}
			if (i <= j && num[i] == '-' || num[i] == '+')
			{
				if (num[i] == num[i - 1])
				{
					// When like this ++123 or --123
					// ++ are used to increment and -- use to decrement
					return false;
				}
				i++;
			}
			Boolean flagDot = false;
			Boolean flagE = false;
			// Check intermediate of i to j
			while (i < j)
			{
				if (num[i] >= '0' && num[i] <= '9')
				{
					// When position of i contain valid numeric digit
					i++;
				}
				else
				{
					if (num[i] == '.')
					{
						if (flagDot == true || 
                            flagE == true || 
                            (i > 0 && 
                             !((num[i - 1] == ' ') || 
                               (num[i - 1] >= '0' && num[i - 1] <= '9'))))
						{
							// Fail case 
							// ➀ When dot appears more than once.
							// ➁ Exponent has no digits.
							return false;
						}
						// When dot is valid
						flagDot = true;
					}
					else if (num[i] == 'e')
					{
						if (flagE == true || 
                            i + 1 >= n || 
                            !(num[i - 1] >= '0' && num[i - 1] <= '9'))
						{
							// Fail case 
							// ➀ When e appears more than once.
							// ➁ Exponent is last digit in number.
							// ➂ Exponent has previous digit is not number.
							return false;
						}
						if (i + 1 <= j && 
                            (num[i + 1] == '-' || num[i + 1] == '+'))
						{
							i++;
						}
						flagE = true;
					}
					else
					{
						return false;
					}
					i++;
				}
			}
			return true;
		}
		return false;
	}
	public void isNumber(String num)
	{
		if (this.isValidNumber(num))
		{
			Console.WriteLine(" Given (" + num + ") is valid number");
		}
		else
		{
			Console.WriteLine(" Given (" + num + ") is not valid number");
		}
	}
	public static void Main(String[] args)
	{
		Numerical task = new Numerical();
		// 10e2
		task.isNumber("10e2");
		// num = --134
		// Result = no
		task.isNumber("  --134");
		// num = -+123 = -123
		// Result = yes
		task.isNumber("  -+123 ");
		// num = .4 = 0.4
		// Result = yes
		task.isNumber("  .4 ");
		// num = 000.4e-12 = 4e-13
		// Result = yes
		task.isNumber(" 000.4e-12 ");
		// num = 2e1.02
		// Result = No
		task.isNumber(" 2e1.02 ");
	}
}

Output

 Given (10e2) is valid number
 Given (  --134) is not valid number
 Given (  -+123 ) is valid number
 Given (  .4 ) is valid number
 Given ( 000.4e-12 ) is valid number
 Given ( 2e1.02 ) is not valid number
package main
import "fmt"
/*
    Go Program for
    Check if a given string is a valid number
*/

func isValidNumber(num string) bool {
	var n int = len(num)
	var i int = 0
	var j int = n - 1
	if n == 0 {
		// When string is empty
		return false
	}
	// Trim the white space from beginning position.
	for (i < n && num[i] == ' ') {
		i++
	}
	// Trim the white space from ending position.
	for (j >= 0 && num[j] == ' ') {
		j--
	}
	if j < i {
		// When string contain white space only
		return false
	}
	if i == j && !(num[i] >= '0' && num[i] <= '9') {
		// When string contains single character. 
		// And this is not a numeric value.
		return false
	}
	if num[i] == '+' || num[i] == '-' || 
		num[i] == '.' || num[i] >= '0' && num[i] <= '9' {
		// When number start with + - and .
		// This three are suitable for start a number.
		if num[i] == '-' || num[i] == '+' {
			// + and - at beginning
			i++
		}
		if i <= j && num[i] == '-' || num[i] == '+' {
			if num[i] == num[i - 1] {
				// When like this ++123 or --123
				// ++ are used to increment and -- use to decrement
				return false
			}
			i++
		}
		var flagDot bool = false
		var flagE bool = false
		// Check intermediate of i to j
		for (i < j) {
			if num[i] >= '0' && num[i] <= '9' {
				// When position of i contain valid numeric digit
				i++
			} else {
				if num[i] == '.' {
					if flagDot == true || flagE == true || 
						(i > 0 && !((num[i - 1] == ' ') || 
							(num[i - 1] >= '0' && num[i - 1] <= '9'))) {
						// Fail case 
						// ➀ When dot appears more than once.
						// ➁ Exponent has no digits.
						return false
					}
					// When dot is valid
					flagDot = true
				} else if num[i] == 'e' {
					if flagE == true || i + 1 >= n || 
						!(num[i - 1] >= '0' && num[i - 1] <= '9') {
						// Fail case 
						// ➀ When e appears more than once.
						// ➁ Exponent is last digit in number.
						// ➂ Exponent has previous digit is not number.
						return false
					}
					if i + 1 <= j && (num[i + 1] == '-' || num[i + 1] == '+') {
						i++
					}
					flagE = true
				} else {
					return false
				}
				i++
			}
		}
		return true
	}
	return false
}
func isNumber(num string) {
	if isValidNumber(num) {
		fmt.Println(" Given (", num, ") is valid number")
	} else {
		fmt.Println(" Given (", num, ") is not valid number")
	}
}
func main() {

	// 10e2
	isNumber("10e2")
	// num = --134
	// Result = no
	isNumber("  --134")
	// num = -+123 = -123
	// Result = yes
	isNumber("  -+123 ")
	// num = .4 = 0.4
	// Result = yes
	isNumber("  .4 ")
	// num = 000.4e-12 = 4e-13
	// Result = yes
	isNumber(" 000.4e-12 ")
	// num = 2e1.02
	// Result = No
	isNumber(" 2e1.02 ")
}

Output

 Given (10e2) is valid number
 Given (  --134) is not valid number
 Given (  -+123 ) is valid number
 Given (  .4 ) is valid number
 Given ( 000.4e-12 ) is valid number
 Given ( 2e1.02 ) is not valid number
<?php
/*
    Php Program for
    Check if a given string is a valid number
*/
class Numerical
{
	public function isValidNumber($num)
	{
		$n = strlen($num);
		$i = 0;
		$j = $n - 1;
		if ($n == 0)
		{
			// When string is empty
			return false;
		}
		// Trim the white space from beginning position.
		while ($i < $n && $num[$i] == ' ')
		{
			$i++;
		}
		// Trim the white space from ending position.
		while ($j >= 0 && $num[$j] == ' ')
		{
			$j--;
		}
		if ($j < $i)
		{
			// When string contain white space only
			return false;
		}
		if ($i == $j && !($num[$i] >= '0' && $num[$i] <= '9'))
		{
			// When string contains single character. 
			// And this is not a numeric value.
			return false;
		}
		if ($num[$i] == '+' || $num[$i] == '-' || 
            $num[$i] == '.' || $num[$i] >= '0' && $num[$i] <= '9')
		{
			// When number start with + - and .
			// This three are suitable for start a number.
			if ($num[$i] == '-' || $num[$i] == '+')
			{
				// + and - at beginning
				$i++;
			}
			if ($i <= $j && $num[$i] == '-' || $num[$i] == '+')
			{
				if ($num[$i] == $num[$i - 1])
				{
					// When like this ++123 or --123
					// ++ are used to increment and -- use to decrement
					return false;
				}
				$i++;
			}
			$flagDot = false;
			$flagE = false;
			// Check intermediate of i to j
			while ($i < $j)
			{
				if ($num[$i] >= '0' && $num[$i] <= '9')
				{
					// When position of i contain valid numeric digit
					$i++;
				}
				else
				{
					if ($num[$i] == '.')
					{
						if ($flagDot == true || 
                            $flagE == true || 
                            ($i > 0 && 
                             !(($num[$i - 1] == ' ') || 
                               ($num[$i - 1] >= '0' && 
                                $num[$i - 1] <= '9'))))
						{
							// Fail case 
							// ➀ When dot appears more than once.
							// ➁ Exponent has no digits.
							return false;
						}
						// When dot is valid
						$flagDot = true;
					}
					else if ($num[$i] == 'e')
					{
						if ($flagE == true || 
                            $i + 1 >= $n || 
                            !($num[$i - 1] >= '0' && 
                              $num[$i - 1] <= '9'))
						{
							// Fail case 
							// ➀ When e appears more than once.
							// ➁ Exponent is last digit in number.
							// ➂ Exponent has previous digit is not number.
							return false;
						}
						if ($i + 1 <= $j && 
                            ($num[$i + 1] == '-' || 
                             $num[$i + 1] == '+'))
						{
							$i++;
						}
						$flagE = true;
					}
					else
					{
						return false;
					}
					$i++;
				}
			}
			return true;
		}
		return false;
	}
	public	function isNumber($num)
	{
		if ($this->isValidNumber($num))
		{
			echo(" Given (".$num.") is valid number"."\n");
		}
		else
		{
			echo(" Given (".$num.") is not valid number"."\n");
		}
	}
}

function main()
{
	$task = new Numerical();
	// 10e2
	$task->isNumber("10e2");
	// num = --134
	// Result = no
	$task->isNumber("  --134");
	// num = -+123 = -123
	// Result = yes
	$task->isNumber("  -+123 ");
	// num = .4 = 0.4
	// Result = yes
	$task->isNumber("  .4 ");
	// num = 000.4e-12 = 4e-13
	// Result = yes
	$task->isNumber(" 000.4e-12 ");
	// num = 2e1.02
	// Result = No
	$task->isNumber(" 2e1.02 ");
}
main();

Output

 Given (10e2) is valid number
 Given (  --134) is not valid number
 Given (  -+123 ) is valid number
 Given (  .4 ) is valid number
 Given ( 000.4e-12 ) is valid number
 Given ( 2e1.02 ) is not valid number
/*
    Node JS Program for
    Check if a given string is a valid number
*/
class Numerical
{
	isValidNumber(num)
	{
		var n = num.length;
		var i = 0;
		var j = n - 1;
		if (n == 0)
		{
			// When string is empty
			return false;
		}
		// Trim the white space from beginning position.
		while (i < n && num.charAt(i) == ' ')
		{
			i++;
		}
		// Trim the white space from ending position.
		while (j >= 0 && num.charAt(j) == ' ')
		{
			j--;
		}
		if (j < i)
		{
			// When string contain white space only
			return false;
		}
		if (i == j && !(num.charAt(i) >= '0' && num.charAt(i) <= '9'))
		{
			// When string contains single character. 
			// And this is not a numeric value.
			return false;
		}
		if (num.charAt(i) == '+' || 
            num.charAt(i) == '-' ||
            num.charAt(i) == '.' || 
            num.charAt(i) >= '0' && 
            num.charAt(i) <= '9')
		{
			// When number start with + - and .
			// This three are suitable for start a number.
			if (num.charAt(i) == '-' || num.charAt(i) == '+')
			{
				// + and - at beginning
				i++;
			}
			if (i <= j && num.charAt(i) == '-' || num.charAt(i) == '+')
			{
				if (num.charAt(i) == num.charAt(i - 1))
				{
					// When like this ++123 or --123
					// ++ are used to increment and -- use to decrement
					return false;
				}
				i++;
			}
			var flagDot = false;
			var flagE = false;
			// Check intermediate of i to j
			while (i < j)
			{
				if (num.charAt(i) >= '0' && num.charAt(i) <= '9')
				{
					// When position of i contain valid numeric digit
					i++;
				}
				else
				{
					if (num.charAt(i) == '.')
					{
						if (flagDot == true || 
                            flagE == true || 
                            (i > 0 && !((num.charAt(i - 1) == ' ') ||
                                        (num.charAt(i - 1) >= '0' &&
                                         num.charAt(i - 1) <= '9'))))
						{
							// Fail case 
							// ➀ When dot appears more than once.
							// ➁ Exponent has no digits.
							return false;
						}
						// When dot is valid
						flagDot = true;
					}
					else if (num.charAt(i) == 'e')
					{
						if (flagE == true || 
                            i + 1 >= n || 
                            !(num.charAt(i - 1) >= '0' && 
                              num.charAt(i - 1) <= '9'))
						{
							// Fail case 
							// ➀ When e appears more than once.
							// ➁ Exponent is last digit in number.
							// ➂ Exponent has previous digit is not number.
							return false;
						}
						if (i + 1 <= j && 
                            (num.charAt(i + 1) == '-' || 
                             num.charAt(i + 1) == '+'))
						{
							i++;
						}
						flagE = true;
					}
					else
					{
						return false;
					}
					i++;
				}
			}
			return true;
		}
		return false;
	}
	isNumber(num)
	{
		if (this.isValidNumber(num))
		{
			console.log(" Given (" + num + ") is valid number");
		}
		else
		{
			console.log(" Given (" + num + ") is not valid number");
		}
	}
}

function main()
{
	var task = new Numerical();
	// 10e2
	task.isNumber("10e2");
	// num = --134
	// Result = no
	task.isNumber("  --134");
	// num = -+123 = -123
	// Result = yes
	task.isNumber("  -+123 ");
	// num = .4 = 0.4
	// Result = yes
	task.isNumber("  .4 ");
	// num = 000.4e-12 = 4e-13
	// Result = yes
	task.isNumber(" 000.4e-12 ");
	// num = 2e1.02
	// Result = No
	task.isNumber(" 2e1.02 ");
}
main();

Output

 Given (10e2) is valid number
 Given (  --134) is not valid number
 Given (  -+123 ) is valid number
 Given (  .4 ) is valid number
 Given ( 000.4e-12 ) is valid number
 Given ( 2e1.02 ) is not valid number
#    Python 3 Program for
#    Check if a given string is a valid number
class Numerical :
	def isValidNumber(self, num) :
		n = len(num)
		i = 0
		j = n - 1
		if (n == 0) :
			#  When string is empty
			return False
		
		#  Trim the white space from beginning position.
		while (i < n and num[i] == ' ') :
			i += 1
		
		#  Trim the white space from ending position.
		while (j >= 0 and num[j] == ' ') :
			j -= 1
		
		if (j < i) :
			#  When string contain white space only
			return False
		
		if (i == j and not(num[i] >= '0'
				and num[i] <= '9')) :
			#  When string contains single character. 
			#  And this is not a numeric value.
			return False
		
		if (num[i] == '+'
			or num[i] == '-'
			or num[i] == '.'
			or num[i] >= '0'
			and num[i] <= '9') :
			#  When number start with + - and .
			#  This three are suitable for start a number.
			if (num[i] == '-'
				or num[i] == '+') :
				#  + and - at beginning
				i += 1
			
			if (i <= j and num[i] == '-'
				or num[i] == '+') :
				if (num[i] == num[i - 1]) :
					#  When like this ++123 or --123
					#  ++ are used to increment and -- use to decrement
					return False
				
				i += 1
			
			flagDot = False
			flagE = False
			#  Check intermediate of i to j
			while (i < j) :
				if (num[i] >= '0'
					and num[i] <= '9') :
					#  When position of i contain valid numeric digit
					i += 1
				else :
					if (num[i] == '.') :
						if (flagDot == True or 
                            flagE == True or(i > 0 and 
                            not((num[i - 1] == ' ') or(num[i - 1] >= '0'
								and num[i - 1] <= '9')))) :
							#  Fail case 
							#  ➀ When dot appears more than once.
							#  ➁ Exponent has no digits.
							return False
						
						#  When dot is valid
						flagDot = True
					elif (num[i] == 'e') :
						if (flagE == True or i + 1 >= n or 
                            not(num[i - 1] >= '0'
								and num[i - 1] <= '9')) :
							#  Fail case 
							#  ➀ When e appears more than once.
							#  ➁ Exponent is last digit in number.
							#  ➂ Exponent has previous digit is not number.
							return False
						
						if (i + 1 <= j and(num[i + 1] == '-'
								or num[i + 1] == '+')) :
							i += 1
						
						flagE = True
					else :
						return False
					
					i += 1
				
			
			return True
		
		return False
	
	def isNumber(self, num) :
		if (self.isValidNumber(num)) :
			print(" Given (", num ,") is valid number")
		else :
			print(" Given (", num ,") is not valid number")
		
	

def main() :
	task = Numerical()
	#  10e2
	task.isNumber("10e2")
	#  num = --134
	#  Result = no
	task.isNumber("  --134")
	#  num = -+123 = -123
	#  Result = yes
	task.isNumber("  -+123 ")
	#  num = .4 = 0.4
	#  Result = yes
	task.isNumber("  .4 ")
	#  num = 000.4e-12 = 4e-13
	#  Result = yes
	task.isNumber(" 000.4e-12 ")
	#  num = 2e1.02
	#  Result = No
	task.isNumber(" 2e1.02 ")

if __name__ == "__main__": main()

Output

 Given ( 10e2 ) is valid number
 Given (   --134 ) is not valid number
 Given (   -+123  ) is valid number
 Given (   .4  ) is valid number
 Given (  000.4e-12  ) is valid number
 Given (  2e1.02  ) is not valid number
#    Ruby Program for
#    Check if a given string is a valid number
class Numerical 
	def isValidNumber(num) 
		n = num.length
		i = 0
		j = n - 1
		if (n == 0) 
			#  When string is empty
			return false
		end

		#  Trim the white space from beginning position.
		while (i < n && num[i] == ' ') 
			i += 1
		end

		#  Trim the white space from ending position.
		while (j >= 0 && num[j] == ' ') 
			j -= 1
		end

		if (j < i) 
			#  When string contain white space only
			return false
		end

		if (i == j && !(num[i] >= '0' && num[i] <= '9')) 
			#  When string contains single character. 
			#  And this is not a numeric value.
			return false
		end

		if (num[i] == '+' || 
            num[i] == '-' || 
            num[i] == '.' || 
            num[i] >= '0' && num[i] <= '9') 
			#  When number start with + - and .
			#  This three are suitable for start a number.
			if (num[i] == '-' || num[i] == '+') 
				#  + and - at beginning
				i += 1
			end

			if (i <= j && num[i] == '-' || num[i] == '+') 
				if (num[i] == num[i - 1]) 
					#  When like this ++123 or --123
					#  ++ are used to increment and -- use to decrement
					return false
				end

				i += 1
			end

			flagDot = false
			flagE = false
			#  Check intermediate of i to j
			while (i < j) 
				if (num[i] >= '0' && num[i] <= '9') 
					#  When position of i contain valid numeric digit
					i += 1
				else
 
					if (num[i] == '.') 
						if (flagDot == true || 
                            flagE == true || 
                            (i > 0 && !((num[i - 1] == ' ') || 
                                        (num[i - 1] >= '0' && 
                                         num[i - 1] <= '9')))) 
							#  Fail case 
							#  ➀ When dot appears more than once.
							#  ➁ Exponent has no digits.
							return false
						end

						#  When dot is valid
						flagDot = true
					elsif (num[i] == 'e') 
						if (flagE == true || 
                            i + 1 >= n || 
                            !(num[i - 1] >= '0' && 
                              num[i - 1] <= '9')) 
							#  Fail case 
							#  ➀ When e appears more than once.
							#  ➁ Exponent is last digit in number.
							#  ➂ Exponent has previous digit is not number.
							return false
						end

						if (i + 1 <= j && 
                            (num[i + 1] == '-' || 
                             num[i + 1] == '+')) 
							i += 1
						end

						flagE = true
					else
 
						return false
					end

					i += 1
				end

			end

			return true
		end

		return false
	end

	def isNumber(num) 
		if (self.isValidNumber(num)) 
			print(" Given (", num ,") is valid number", "\n")
		else
 
			print(" Given (", num ,") is not valid number", "\n")
		end

	end

end

def main() 
	task = Numerical.new()
	#  10e2
	task.isNumber("10e2")
	#  num = --134
	#  Result = no
	task.isNumber("  --134")
	#  num = -+123 = -123
	#  Result = yes
	task.isNumber("  -+123 ")
	#  num = .4 = 0.4
	#  Result = yes
	task.isNumber("  .4 ")
	#  num = 000.4e-12 = 4e-13
	#  Result = yes
	task.isNumber(" 000.4e-12 ")
	#  num = 2e1.02
	#  Result = No
	task.isNumber(" 2e1.02 ")
end

main()

Output

 Given (10e2) is valid number
 Given (  --134) is not valid number
 Given (  -+123 ) is valid number
 Given (  .4 ) is valid number
 Given ( 000.4e-12 ) is valid number
 Given ( 2e1.02 ) is not valid number
import scala.collection.mutable._;
/*
    Scala Program for
    Check if a given string is a valid number
*/
class Numerical()
{
	def isValidNumber(num: String): Boolean = {
		var n: Int = num.length();
		var i: Int = 0;
		var j: Int = n - 1;
		if (n == 0)
		{
			// When string is empty
			return false;
		}
		// Trim the white space from beginning position.
		while (i < n && num.charAt(i) == ' ')
		{
			i += 1;
		}
		// Trim the white space from ending position.
		while (j >= 0 && num.charAt(j) == ' ')
		{
			j -= 1;
		}
		if (j < i)
		{
			// When string contain white space only
			return false;
		}
		if (i == j && !(num.charAt(i) >= '0' && num.charAt(i) <= '9'))
		{
			// When string contains single character. 
			// And this is not a numeric value.
			return false;
		}
		if (num.charAt(i) == '+' || 
            num.charAt(i) == '-' || 
            num.charAt(i) == '.' || 
            num.charAt(i) >= '0' && 
            num.charAt(i) <= '9')
		{
			// When number start with + - and .
			// This three are suitable for start a number.
			if (num.charAt(i) == '-' || 
                num.charAt(i) == '+')
			{
				// + and - at beginning
				i += 1;
			}
			if (i <= j && num.charAt(i) == '-' || 
                num.charAt(i) == '+')
			{
				if (num.charAt(i) == num.charAt(i - 1))
				{
					// When like this ++123 or --123
					// ++ are used to increment and -- use to decrement
					return false;
				}
				i += 1;
			}
			var flagDot: Boolean = false;
			var flagE: Boolean = false;
			// Check intermediate of i to j
			while (i < j)
			{
				if (num.charAt(i) >= '0' && num.charAt(i) <= '9')
				{
					// When position of i contain valid numeric digit
					i += 1;
				}
				else
				{
					if (num.charAt(i) == '.')
					{
						if (flagDot == true || 
                            flagE == true || 
                            (i > 0 && !((num.charAt(i - 1) == ' ') ||
                                        (num.charAt(i - 1) >= '0' &&
                                         num.charAt(i - 1) <= '9'))))
						{
							// Fail case 
							// ➀ When dot appears more than once.
							// ➁ Exponent has no digits.
							return false;
						}
						// When dot is valid
						flagDot = true;
					}
					else if (num.charAt(i) == 'e')
					{
						if (flagE == true || i + 1 >= n || 
                            !(num.charAt(i - 1) >= '0' && 
                              num.charAt(i - 1) <= '9'))
						{
							// Fail case 
							// ➀ When e appears more than once.
							// ➁ Exponent is last digit in number.
							// ➂ Exponent has previous digit is not number.
							return false;
						}
						if (i + 1 <= j && 
                            (num.charAt(i + 1) == '-' || 
                             num.charAt(i + 1) == '+'))
						{
							i += 1;
						}
						flagE = true;
					}
					else
					{
						return false;
					}
					i += 1;
				}
			}
			return true;
		}
		return false;
	}
	def isNumber(num: String): Unit = {
		if (isValidNumber(num))
		{
			println(" Given (" + num + ") is valid number");
		}
		else
		{
			println(" Given (" + num + ") is not valid number");
		}
	}
}
object Main
{
	def main(args: Array[String]): Unit = {
		var task: Numerical = new Numerical();
		// 10e2
		task.isNumber("10e2");
		// num = --134
		// Result = no
		task.isNumber("  --134");
		// num = -+123 = -123
		// Result = yes
		task.isNumber("  -+123 ");
		// num = .4 = 0.4
		// Result = yes
		task.isNumber("  .4 ");
		// num = 000.4e-12 = 4e-13
		// Result = yes
		task.isNumber(" 000.4e-12 ");
		// num = 2e1.02
		// Result = No
		task.isNumber(" 2e1.02 ");
	}
}

Output

 Given (10e2) is valid number
 Given (  --134) is not valid number
 Given (  -+123 ) is valid number
 Given (  .4 ) is valid number
 Given ( 000.4e-12 ) is valid number
 Given ( 2e1.02 ) is not valid number
import Foundation;
/*
    Swift 4 Program for
    Check if a given string is a valid number
*/
class Numerical
{
	func isValidNumber(_ text: String) -> Bool
	{
      	let num = Array(text);
		let n: Int = num.count;
		var i: Int = 0;
		var j: Int = n - 1;
		if (n == 0)
		{
			// When string is empty
			return false;
		}
		// Trim the white space from beginning position.
		while (i < n && num[i] == " ")
		{
			i += 1;
		}
		// Trim the white space from ending position.
		while (j >= 0 && num[j] == " ")
		{
			j -= 1;
		}
		if (j < i)
		{
			// When string contain white space only
			return false;
		}
		if (i == j && !(num[i] >= "0" && num[i] <= "9"))
		{
			// When string contains single character. 
			// And this is not a numeric value.
			return false;
		}
		if (num[i] == "+" || 
            num[i] == "-" || 
            num[i] == "." || 
            num[i] >= "0" && num[i] <= "9")
		{
			// When number start with + - and .
			// This three are suitable for start a number.
			if (num[i] == "-" || num[i] == "+")
			{
				// + and - at beginning
				i += 1;
			}
			if (i <= j && num[i] == "-" || num[i] == "+")
			{
				if (num[i] == num[i - 1])
				{
					// When like this ++123 or --123
					// ++ are used to increment and -- use to decrement
					return false;
				}
				i += 1;
			}
			var flagDot: Bool = false;
			var flagE: Bool = false;
			// Check intermediate of i to j
			while (i < j)
			{
				if (num[i] >= "0" && num[i] <= "9")
				{
					// When position of i contain valid numeric digit
					i += 1;
				}
				else
				{
					if (num[i] == ".")
					{
						if (flagDot == true || 
                            flagE == true || 
                            (i > 0 && !((num[i - 1] == " ") || 
                                        (num[i - 1] >= "0" && 
                                         num[i - 1] <= "9"))))
						{
							// Fail case 
							// ➀ When dot appears more than once.
							// ➁ Exponent has no digits.
							return false;
						}
						// When dot is valid
						flagDot = true;
					}
					else if (num[i] == "e")
					{
						if (flagE == true || 
                            i + 1 >= n || 
                            !(num[i - 1] >= "0" && 
                              num[i - 1] <= "9"))
						{
							// Fail case 
							// ➀ When e appears more than once.
							// ➁ Exponent is last digit in number.
							// ➂ Exponent has previous digit is not number.
							return false;
						}
						if (i + 1 <= j && 
                            (num[i + 1] == "-" || 
                             num[i + 1] == "+"))
						{
							i += 1;
						}
						flagE = true;
					}
					else
					{
						return false;
					}
					i += 1;
				}
			}
			return true;
		}
		return false;
	}
	func isNumber(_ num: String)
	{
		if (self.isValidNumber(num))
		{
			print(" Given (", num ,") is valid number");
		}
		else
		{
			print(" Given (", num ,") is not valid number");
		}
	}
}
func main()
{
	let task: Numerical = Numerical();
	// 10e2
	task.isNumber("10e2");
	// num = --134
	// Result = no
	task.isNumber("  --134");
	// num = -+123 = -123
	// Result = yes
	task.isNumber("  -+123 ");
	// num = .4 = 0.4
	// Result = yes
	task.isNumber("  .4 ");
	// num = 000.4e-12 = 4e-13
	// Result = yes
	task.isNumber(" 000.4e-12 ");
	// num = 2e1.02
	// Result = No
	task.isNumber(" 2e1.02 ");
}
main();

Output

 Given ( 10e2 ) is valid number
 Given (   --134 ) is not valid number
 Given (   -+123  ) is valid number
 Given (   .4  ) is valid number
 Given (  000.4e-12  ) is valid number
 Given (  2e1.02  ) is not valid number
/*
    Kotlin Program for
    Check if a given string is a valid number
*/
class Numerical
{
	fun isValidNumber(num: String): Boolean
	{
		val n: Int = num.length;
		var i: Int = 0;
		var j: Int = n - 1;
		if (n == 0)
		{
			// When string is empty
			return false;
		}
		// Trim the white space from beginning position.
		while (i < n && num.get(i) == ' ')
		{
			i += 1;
		}
		// Trim the white space from ending position.
		while (j >= 0 && num.get(j) == ' ')
		{
			j -= 1;
		}
		if (j < i)
		{
			// When string contain white space only
			return false;
		}
		if (i == j && !(num.get(i) >= '0' && num.get(i) <= '9'))
		{
			// When string contains single character. 
			// And this is not a numeric value.
			return false;
		}
		if (num.get(i) == '+' || 
            num.get(i) == '-' || 
            num.get(i) == '.' || 
            num.get(i) >= '0' && num.get(i) <= '9')
		{
			// When number start with + - and .
			// This three are suitable for start a number.
			if (num.get(i) == '-' || num.get(i) == '+')
			{
				// + and - at beginning
				i += 1;
			}
			if (i <= j && num.get(i) == '-' || num.get(i) == '+')
			{
				if (num.get(i) == num.get(i - 1))
				{
					// When like this ++123 or --123
					// ++ are used to increment and -- use to decrement
					return false;
				}
				i += 1;
			}
			var flagDot: Boolean = false;
			var flagE: Boolean = false;
			// Check intermediate of i to j
			while (i < j)
			{
				if (num.get(i) >= '0' && num.get(i) <= '9')
				{
					// When position of i contain valid numeric digit
					i += 1;
				}
				else
				{
					if (num.get(i) == '.')
					{
						if (flagDot == true || 
                            flagE == true || 
                            (i > 0 && 
                             !((num.get(i - 1) == ' ') || 
                               (num.get(i - 1) >= '0' && 
                                num.get(i - 1) <= '9'))))
						{
							// Fail case 
							// ➀ When dot appears more than once.
							// ➁ Exponent has no digits.
							return false;
						}
						// When dot is valid
						flagDot = true;
					}
					else if (num.get(i) == 'e')
					{
						if (flagE == true || 
                            i + 1 >= n || 
                            !(num.get(i - 1) >= '0' && 
                              num.get(i - 1) <= '9'))
						{
							// Fail case 
							// ➀ When e appears more than once.
							// ➁ Exponent is last digit in number.
							// ➂ Exponent has previous digit is not number.
							return false;
						}
						if (i + 1 <= j && 
                            (num.get(i + 1) == '-' || 
                             num.get(i + 1) == '+'))
						{
							i += 1;
						}
						flagE = true;
					}
					else
					{
						return false;
					}
					i += 1;
				}
			}
			return true;
		}
		return false;
	}
	fun isNumber(num: String): Unit
	{
		if (this.isValidNumber(num))
		{
			println(" Given (" + num + ") is valid number");
		}
		else
		{
			println(" Given (" + num + ") is not valid number");
		}
	}
}
fun main(args: Array < String > ): Unit
{
	val task: Numerical = Numerical();
	// 10e2
	task.isNumber("10e2");
	// num = --134
	// Result = no
	task.isNumber("  --134");
	// num = -+123 = -123
	// Result = yes
	task.isNumber("  -+123 ");
	// num = .4 = 0.4
	// Result = yes
	task.isNumber("  .4 ");
	// num = 000.4e-12 = 4e-13
	// Result = yes
	task.isNumber(" 000.4e-12 ");
	// num = 2e1.02
	// Result = No
	task.isNumber(" 2e1.02 ");
}

Output

 Given (10e2) is valid number
 Given (  --134) is not valid number
 Given (  -+123 ) is valid number
 Given (  .4 ) is valid number
 Given ( 000.4e-12 ) is valid number
 Given ( 2e1.02 ) is not valid number




Comment

Please share your knowledge to improve code and content standard. Also submit your doubts, and test case. We improve by your feedback. We will try to resolve your query as soon as possible.

New Comment