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();
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.