w3resource

Java programming Exercises: Check if a given string is a mathematical expression

Java Regular Expression: Exercise-29 with Solution

Write a Java program to check if a given string is a Mathematical Expression or not.

Sample Solution:

Java Code:

public class test { 
   public static void main(String[] args) {	   
	    String text ="10";
		System.out.println("Original string: "+text);
		System.out.println("Check if the said string is a mathematical expression or not: "+validate(text));
		text ="10 + 20";
		System.out.println("Original string: "+text);
		System.out.println("Check if the said string is a mathematical expression or not: "+validate(text));
		text =" 10 * 20 * 30 ";
		System.out.println("Original string: "+text);
		System.out.println("Check if the said string is a mathematical expression or not: "+validate(text));
		text ="-10 * 20 - -30";
		System.out.println("Original string: "+text);
		System.out.println("Check if the said string is a mathematical expression or not: "+validate(text));
		text ="-10 * 20 - -2e4";
		System.out.println("Original string: "+text);
		System.out.println("Check if the said string is a mathematical expression or not: "+validate(text));
		text ="100 +";
		System.out.println("\nOriginal string: "+text);
		System.out.println("Check if the said string is a mathematical expression or not: "+validate(text));
		text ="100 + foo";
		System.out.println("Original string: "+text);
		System.out.println("Check if the said string is a mathematical expression or not: "+validate(text));
		text =" 10 *+ 20 * 30 ";
		System.out.println("Original string: "+text);
		System.out.println("Check if the said string is a mathematical expression or not: "+validate(text));
        }

   public static boolean validate(String text) {
	   return text.matches("((?:(?:^|[-+_*/])(?:\\s*-?\\d+(\\.\\d+)?(?:[eE][+-]?\\d+)?\\s*))+$)");
    }
}

Sample Output:

Original string: 10
Check if the said string is a mathematical expression or not: true
Original string: 10 + 20
Check if the said string is a mathematical expression or not: true
Original string:  10 * 20 * 30 
Check if the said string is a mathematical expression or not: true
Original string: -10 * 20 - -30
Check if the said string is a mathematical expression or not: true
Original string: -10 * 20 - -2e4
Check if the said string is a mathematical expression or not: true

Original string: 100 +
Check if the said string is a mathematical expression or not: false
Original string: 100 + foo
Check if the said string is a mathematical expression or not: false
Original string:  10 *+ 20 * 30 
Check if the said string is a mathematical expression or not: false

Flowchart :

Flowchart: Last n vowels of a given string.

Java Code Editor:

Contribute your code and comments through Disqus.

Previous: Reverse the words of length higher than 3 in a given string.

Next: Insert a dash between an upper case letter and a lower case letter in a given string.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.

Share this Tutorial / Exercise on : Facebook and Twitter

Java: Tips of the Day

What is the best way to filter a Java Collection?

Java 8 (2014) solves this problem using streams and lambdas in one line of code:

List<Person> beerDrinkers = persons.stream()
    .filter(p -> p.getAge() > 16).collect(Collectors.toList());

Use Collection#removeIf to modify the collection in place. (Notice: In this case, the predicate will remove objects who satisfy the predicate):

persons.removeIf(p -> p.getAge() <= 16);

lambdaj allows filtering collections without writing loops or inner classes:

List beerDrinkers = select(persons, having(on(Person.class).getAge(),
    greaterThan(16)));

Ref: https://bit.ly/3uwYid6