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

For each numerical value 0, 1, 2, …9 (0 <= NUMBER <= 9), embedded in a sentence,

ID: 3809842 • Letter: F

Question

For each numerical value 0, 1, 2, …9 (0 <= NUMBER <= 9), embedded in a sentence, convert that value to its equivalent English text. Print the converted sentence both to the screen and to an output file.

Your input file consists of a variable number of records. Each record is a sentence of length <= 80 characters. More than one numerical value in the given range may appear in a sentence. You must deal with upper and lower case issues. If a line begins with a single digit, write that digit as a word starting with an uppercase letter. See the examples below.

Examples: Input Record: 3 foxes were chasing 5 rabbits and 10 ducks.

Output Record: Three foxes were chasing five rabbits and 10 ducks.

Input Record: I used 3 eggs out of the 12 for the cake.

Output Record: I used three eggs out of the 12 for the cake.

Input Record: 1 picture is worth 1000 words.

Output Record: One picture is worth 1000 words.

Input Record: There are 260 students enrolled in Java.

Output Record: There are 260 students enrolled in Java.

Create the following as an input file for testing.

The 8 eggs were separated into 3 groups.
5 boys and 7 girls were present.
He was 1 hour and 5 minutes late.
She ate 3 dozen doughnuts!
4 dogs were chasing 3 cats.
The captain said, “This is the 0 hour”. I tried to call you 9 times today; Ann tried 6 times!!
The 12 firemen worked quickly.

Prompt the user for the name of the input file. Name your output file “outSentences.txt” . Save the output file in the same directory as your code to make grading on different systems easier.

More details:
Create two class files. One class is the Converter. It has a StringBuilder field for the original sentence and a String field for the converted sentence.
The constructor will call a method to convert the original sentence.
You are to use only a select few methods of the StringBuilder class for the conversion. These are the only methods of the String and StringBuilder class you are permitted to use:

StringBuilder: constructors, charAt( ), indexOf( ), length( ), replace( )
String: constructors, charAt( ), length( )

You are also permitted the use of the isDigit( ) method from the Character class.

The second class is the driver class The driver will contain the main( ) method. The main( ) method will open a file for input. Read the file line by line and send each line to the Converter class. The main( ) method will call the get method( ) of the Converter class to get the converted string, and print this string both to the screen and to a file.

Explanation / Answer


public class Converter {
  
   StringBuilder sb = new StringBuilder();
   String cs;
   private String[] num = {"zero","one","two","three","four","five","six",
           "seven","eight","nine"};
  
   public void convert(){
       int l = sb.length();
       for(int i=0;i<l;i++){
          
           if(Character.isDigit(sb.charAt(i)) && !Character.isDigit(sb.charAt(i+1))){
               int d = Character.getNumericValue(sb.charAt(i));
               sb.replace(i, i+1, "");
               sb.replace(i, i, num[d]);
           }
           if(Character.isDigit(sb.charAt(i)) && Character.isDigit(sb.charAt(i+1)))
               i++;
          
       }
       cs = sb.toString();
   }

   public String getCs() {
       return cs;
   }

   public void setSb(String sb) {
       this.sb = new StringBuilder(sb);
      
      
   }
        

}

//-------------------------------------------------------------------------------------------------------------

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.util.Scanner;

public class Driver {

   public static void main(String[] args) throws Exception{
       // TODO Auto-generated method stub
       String inp;
       Converter c = new Converter();
       Scanner sc = new Scanner(System.in);
       System.out.println("Enter input file: ");
       inp = sc.next();
       sc.close();
       Scanner sentence = new Scanner(new File(inp));
      
       File fout = new File("outSentences.txt");
       FileOutputStream fos = new FileOutputStream(fout);
     
       BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos));
      
       while (sentence.hasNextLine()){
           String s = sentence.nextLine();
           c.setSb(s);
           c.convert();
           System.out.println("Input Record: "+s);
           System.out.println("Output Record: "+c.getCs());
           bw.write(c.getCs());
           bw.newLine();
       }
      
       bw.close();
       sentence.close();
      

   }

}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote