Purpose: Use math functions, string manipulation and input/output to create an alternative to Twitter called Chipper.
Requirements:
1. Ask the user for 3 messages to send using the following characteristics:
1. Generate a random number to ask the user for a # of chars for the message. The random number should be between 1 and 50. Use Math.random to generate 3 numbers: rand1, rand2, rand3
2. Have the user type the strings into 3 separate variables
3. Find the length of the string and report if the string is too long, then truncate it and reassign it to the string
2. String variables: Keep track of all three messages in msg1, msg2, msg3 strings. Also combine (concatenate) all 3 messages into 1 string called msgAll
3. int variables: Keep track of the lengths of all three messages (after truncating) in msg1Length, msg2Length, msg3Length
4. Counters:
1. Count and report the total # of characters in msgAll.
2. Count and report the number of vowels in msgAll (this will require a loop).
3. Count and report the number of spaces in msgAll (this will require a loop).
5. Display msgAll backwards (this will require a loop).
6. Display msgAll Vertically (one char per line).
Sample Output (user input in bold): Note: The output is incomplete, just use as a reference.
Message #1: Enter a message with 18 chars or less:
This is a message to you!
Oops! Your message has more than 18 characters! It has been truncated to:
This is a message
Message #2: Enter a message with 40 chars or less:
…. Message ….
Message #3: Enter a message with 28 chars or less:
…. Message ….
Here is message 1: … Message …
Here is message 2: … Message …
Here is message 3: … Message …
Here are your three messages combined:
This is a message … Message … … Message …
Here are your messages in all uppercase:
THIS IS A MESSAGE … MESSAGE … … MESSAGE …
Here are your messages in all lowercase:
this is a message … message … … message …
The count of characters in all of your messages: 99
The number of vowels in all of your messages: 10
The number of spaces in all of your messages: 8
Here is your message backwards: xxxxxya aaks ss kdkl3
Here is your message vertical:
T
H
I
S
I
S
…
Expert Answer
-All of the functionalities are added to one class name Chipper only, the other class is simply the Main class that is creating an object and just calling in all the required functionalities of the Chipper class.
Chipper Class
import java.util.Random;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Chipper {
private String chat;
private String[] mgs; //Creating an array of String type to store all the msgs
Chipper(){
chat=null;
mgs=new String[3];
input();
}
public void input(){
Scanner scan=new Scanner(System.in); //To take in the input
Random ran=new Random(); //Using Random for creating a Random input size
for(int i=0;i<3;i++){
int length=ran.nextInt(51)+1; //Definining the max size of Randomness
System.out.println(“Message #”+(i+1)+”: Enter a message with “+length+” chars or less:”);
chat=scan.nextLine(); //taking the entire line as string input.
if(chat.length()>length){ //Checking the size of input
chat=chat.substring(0, length);
System.out.println(“Oops! Your message has more than “+length+” characters! It has been truncated to:”);
System.out.println(chat);
mgs[i]=chat;
}
else{
System.out.println(chat);
mgs[i]=chat;
}
}
}
public int countSpaces(){ //Counting the spaces in all of the 3 messages.
int count=0;
for(String str:mgs){
for(int i=0;i<str.length();i++){
if(Character.isWhitespace(str.charAt(i))){
count++;
}
}
}
return count;
}
public int countVowels(){ //Counting vowels in all of the messages
int count=0;
String regex=”[aeiou]”;//Defining the regular expression with one having [aeiou] characters
Pattern pat=Pattern.compile(regex); //using the pattern class to use the above pattern
for(String str:mgs){
Matcher mat=pat.matcher(str);
while(mat.find()){ //Counting the number of time vowels was encountered in the msg
count++;
}
}
return count;
}
public int countCharacter(){ //Counting Character in all of the msgs
int count=0;
for(String str:mgs){
for(int i=0;i<str.length();i++){
count++;
}
/*This calls in the spaces in the end to remove space count from the final
* character count */
}
return (count-this.countSpaces());
}
public void diplay(){
for(String str:mgs){
System.out.println(str);
}
}
public void toLowerCase(){
for(String str:mgs){
for(int i=0;i<str.length();i++){
System.out.print(Character.toLowerCase(str.charAt(i)));
}
System.out.println();
}
}
public void count(){
System.out.println(“The count of characters in all of your messages: “+this.countCharacter());
System.out.println(“The number of vowels in all of your messages: “+this.countVowels());
System.out.println(“The number of spaces in all of your messages: “+this.countSpaces());
}
public void displayBackwards(){
for(String str:mgs){
for(int i=str.length()-1;i>=0;i–){
System.out.print(str.charAt(i));
}
System.out.println();
}
}
public String combinedMsg(){
StringBuilder strx=new StringBuilder();
for(String str:mgs){
strx.append(str);
strx.append(” “);
}
return strx.toString();
}
public void verticalMsg(){
String stx=this.combinedMsg();
for(int i=0;i<stx.length();i++){
System.out.println(stx.charAt(i));
}
}
}
Main Class
public class ChipperMain {
public static void main(String[] args){
Chipper cp=new Chipper();
System.out.println(“————-Result————–“);
cp.toLowerCase();
cp.count();
cp.displayBackwards();
System.out.println(“Combined Msgs:”+cp.combinedMsg());
cp.verticalMsg();
}
}
The output generated in the dry run.