Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Project Outcomes: Read user input and validate the value uses branch control str

ID: 3703280 • Letter: P

Question

Project Outcomes:

Read user input and validate the value

uses branch control structure

uses loop control structure

follows standard acceptable programming practices.

uses javadoc to for the class

Prep Readings:

Chapter 1 - 4

Project Requirements:

Prompt the user to enter a string of their choosing. Store the text in a string. Output the string.

Ex:

Implement a getMenuChoice() method, which outputs a menu of user options for analyzing/editing the string, and returns the user's entered menu option. Each option is represented by a single character.

If an invalid character is entered, continue to prompt for a valid choice. Call getMenuChoice() in the main() method. hint: use nextLine().charAt(0) to read user input as char

Important Change! Please add a scanner as parameter to the getMenuChoice() method and use the passed in scanner to read user input. Only declare one Scanner object on System.in stream in your main method and pass it to getMenuChoice() method when calling it. Read section 6.11 for more information about why this is necessary.

Ex:

Implement the getNumOfNonWSCharacters() method. getNumOfNonWSCharacters() has a string as a parameter and returns the number of characters in the string, excluding all whitespace. Call getNumOfNonWSCharacters() in the main() method and handle each menu option accordingly. hint: use Character class method to check white space characters. What branch statement is most suitable?

Ex:

Implement the getNumOfWords() method. getNumOfWords() has a string as a parameter and returns the number of words in the string. Hint: Words end when a space is reached and the last character is not space except for the last word in a sentence.

Ex:

Implement the findText() method, which has two strings as parameters. The first parameter is the text to be found in the user provided sample text, and the second parameter is the user provided sample text. The method returns the number of instances a word or phrase is found in the string. In the main() method, prompt the user for a word or phrase to be found and then call findText() in the main() method.

Ex:

Implement the replaceExclamation() method. replaceExclamation() has a string parameter and returns a string which replaces each '!' character in the string with a '.' character. replaceExclamation() DOES NOT output the string. Call replaceExclamation() in the main() method, and then output the edited string.

Ex.

Implement the shortenSpace() method. shortenSpace() has a string parameter and returns a string that replaces all sequences of 2 or more spaces with a single space. shortenSpace() DOES NOT output the string. Call shortenSpace() in the main() method, and then output the edited string.

Ex:

Hints

Use only nextLine() in the project. What will happen when you mix next() with nextLine()?

Use top down method to implement the project portion by portion. Finish big picture before getting into details.

Other instruction

Copy the user prompt and error message from the sample run into your code to avoid output format mismatch.

Use printf to print table rows with data. Display to the hundreds for all money amount.

Develop this program on your PC and upload the .java file to the project 4 dropbox on elearning.

Your program should be compilable and giving generally correct input/output on your PC before you test run your code on this page.

You will get 80% if you pass all tests on this page. If you can not pass all tests here, there will be an automatic 20% off before your code is manually graded on the .java file uploaded to elearning. There will be another 20% off if your code is not compilable.

The rest of the grade (20%) will be graded on elearning on your coding style and javadoc. Make sure you add javadoc to each class and function

Sample run IO

Input (you can use in the zylab in the input field):

Interactive input/output:

Output you will see on zybooks:

Extra hints mentioned in class:

Explanation / Answer

AuthoringAssistant.java

import java.util.Scanner;

public class AuthoringAssistant {

  

public static void main(String[] args) {

Scanner scan = new Scanner(System.in);

System.out.print("Enter a sample text: ");

String s = scan.nextLine();

System.out.println("You entered: "+s);

int count = 0;

String returnString = "";

while(true){

getMenuChoice();

System.out.println(" Choose an option: ");

char ch = scan.next().charAt(0);

if(ch == 'c' || ch == 'C'){

count = getNumOfNonWSCharacters(s);

System.out.println("Number of non-whitespace characters: "+count);

}

else if(ch == 'w' || ch == 'W'){

count = getNumOfWords(s);

System.out.println("Number of words: "+count);

}

else if(ch == 'f' || ch == 'F'){

System.out.println("Enter a word or phrase to be found: ");

String find = scan.next();

count = findText(s, find);

System.out.println("""+find+"" instances: "+count);

}

else if(ch == 'r' || ch == 'R'){

returnString = replaceExclamation(s);

System.out.println("Edited text: "+returnString);

}else if(ch == 's' || ch == 'S'){

returnString = shortenSpace(s);

System.out.println("Edited text: "+returnString);

}else if(ch == 'q' || ch == 'Q'){

break;

}

}

return;

}

public static void getMenuChoice(){

  

System.out.println("MENU c - Number of non-whitespace characters w - Number of words f - Find text r - Replace all !'s s - Shorten spaces q - Quit");

}

public static int getNumOfNonWSCharacters(String s){

int count = 0;

for(int i=0; i<s.length(); i++){

if(s.charAt(i) != ' '){

count++;

}

}

return count;

}

public static int getNumOfWords(String s){

int count = 0;

if(s.length()>0){

count = 1;

}

for(int i=0; i<s.length(); i++){

if(s.charAt(i) == ' '){

count++;

}

}

return count;

}

public static int findText(String s, String find){

int count = 0;

String words[] = s.split("\s+");

for(int i=0; i<words.length; i++){

if(words[i].equalsIgnoreCase(find)){

count++;

}

}

return count;

}

public static String replaceExclamation(String s){

String returnString = "";

for(int i=0; i<s.length(); i++){

if(s.charAt(i) == '!'){

returnString = returnString +"";

}

else{

returnString = returnString + s.charAt(i);

}

}

return returnString;

}

public static String shortenSpace(String s){

String returnString = "";

boolean isPreviousCharSpace = true;

for(int i=0; i<s.length(); i++){

if(s.charAt(i) != ' '){

isPreviousCharSpace = false;

}

if(isPreviousCharSpace == false){

returnString = returnString + s.charAt(i);

}

if(s.charAt(i) == ' '){

isPreviousCharSpace = true;

}

}

return returnString;

}

}

Output:

Enter a sample text: We'll continue our quest in space. There will be more shuttle flights and more shuttle crews and, yes, more volunteers, more civilians, more teachers in space. Nothing ends here; our hopes and our jou
You entered: We'll continue our quest in space. There will be more shuttle flights and more shuttle crews and, yes, more volunteers, more civilians, more teachers in space. Nothing ends here; our hopes and our jou
MENU
c - Number of non-whitespace characters
w - Number of words
f - Find text
r - Replace all !'s
s - Shorten spaces
q - Quit


Choose an option:
c
Number of non-whitespace characters: 167
MENU
c - Number of non-whitespace characters
w - Number of words
f - Find text
r - Replace all !'s
s - Shorten spaces
q - Quit


Choose an option:
w
Number of words: 40
MENU
c - Number of non-whitespace characters
w - Number of words
f - Find text
r - Replace all !'s
s - Shorten spaces
q - Quit


Choose an option:
f
Enter a word or phrase to be found:
test
"test" instances: 0
MENU
c - Number of non-whitespace characters
w - Number of words
f - Find text
r - Replace all !'s
s - Shorten spaces
q - Quit


Choose an option:
r
Edited text: We'll continue our quest in space. There will be more shuttle flights and more shuttle crews and, yes, more volunteers, more civilians, more teachers in space. Nothing ends here; our hopes and our jou
MENU
c - Number of non-whitespace characters
w - Number of words
f - Find text
r - Replace all !'s
s - Shorten spaces
q - Quit


Choose an option:
s
Edited text: We'll continue our quest in space. There will be more shuttle flights and more shuttle crews and, yes, more volunteers, more civilians, more teachers in space. Nothing ends here; our hopes and our jou
MENU
c - Number of non-whitespace characters
w - Number of words
f - Find text
r - Replace all !'s
s - Shorten spaces
q - Quit


Choose an option:
q