w3resource

Java: Accepts a string from the user and check whether the string is correct or not

Java Basic: Exercise-244 with Solution

Validate String for XYZ Rules

Write a Java program that accepts a string from the user and checks whether it is correct or not.

The conditions for getting the "correct answer" are:
a) There must be only three characters X, Y, and Z in the string, and no other characters.
b) Any string of any form such as aXYZa can get the "correct answer", where a is either an empty string or a string consisting only of the letter X;
c) If aXbZc is true, aXbYZca is also valid, where a, b, c are either empty strings or a string consisting only of the letter X.

Visual Presentation:

Java Basic Exercises: Accepts a string from the user and check whether the string is correct or not.

Sample Solution:

Java Code:

 // Importing necessary classes
import java.util.PriorityQueue;
import java.util.Scanner;

// Defining a class named "Main"
public class Main {
     
    // Static nested class "Dic" representing a pair of word and page number
    static class Dic implements Comparable{
        // Instance variables to store word and page number
        String moji;
        int page;
        
        // Parameterized constructor to initialize word and page number
        Dic(String moji, int page){
            this.moji=moji;
            this.page=page;
        }

        // Implementation of the compareTo method to define the natural order of Dic objects
        public int compareTo(Dic d) {
            if(this.moji.equals(d.moji)) {
                return this.page-d.page;
            }
            else {
                return this.moji.compareTo(d.moji);
            }
        }
    }
     
    // Main method, the entry point of the program
    public static void main(String[] args) {
        // Using the try-with-resources statement to automatically close the Scanner
        try(Scanner sc = new Scanner(System.in)){
            // Creating a PriorityQueue to store Dic objects
            PriorityQueue pq=new PriorityQueue<>();
            
            // Prompting the user to input pairs of a word and a page number
			System.out.println("Input pairs of a word and a page number:");
            
            // Reading input until there is no more input
            while(sc.hasNextLine()) {
                // Reading a line and splitting it into word and page number
                String str=sc.nextLine();
                String[] token=str.split(" ");
                String s=token[0];
                int n=Integer.parseInt(token[1]);
                
                // Creating a new Dic object and adding it to the PriorityQueue
                pq.add(new Dic(s, n));
            }
            
            // Initializing a variable to store the previous word
            String pre="";

            // Printing the word and page number in alphabetical order
            System.out.println("\nWord and page number in alphabetical order:"); 
            while(!pq.isEmpty()) {
                // Polling the smallest Dic object from the PriorityQueue
                Dic dic=pq.poll();

                // Checking if the current word is the same as the previous one
                if(dic.moji.equals(pre)) {
                    System.out.print(" "+dic.page);
                }
                else if(pre.equals("")) {
                    System.out.println(dic.moji);
                    System.out.print(dic.page);
                }
                else {
                    System.out.println();
                    System.out.println(dic.moji);
                    System.out.print(dic.page);
                }
                // Updating the previous word
                pre=dic.moji;
            }
            System.out.println();
        }
    }
}

Sample Output:

Input a string:
 XYZ
Correct format..

Flowchart:

Flowchart: Accepts a string from the user and check whether the string is correct or not.

Java Code Editor:

Contribute your code and comments through Disqus.

Previous: Write a Java program which reads a list of pairs of a word and a page number, and prints the word and a list of the corresponding page numbers.
Next: Write a Java program which accepts students name, id, and marks and display the highest score and the lowest score.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Become a Patron!

Follow us on Facebook and Twitter for latest update.

It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.

https://www.w3resource.com/java-exercises/basic/java-basic-exercise-244.php