ABSOLUTE JAVA

Absolute Java

Authors: Walter Savitch ,kenrick Mock
ISBN: 9780132830317
Edition: 5
Chapter: Swing I
Exercise: Programming Projects
Question: 1

 

Question by Anonymous on 11 Dec, 2017 at 02:23 PM

Design and code a Swing GUI to translate text that is input in English into Pig Latin. You can assume that the sentence contains no punctuation. The rules for Pig Latin are as follows:

a. For words that begin with consonants, move the leading consonant to the end of the word and add “ay.” Thus, “ball” becomes “allbay”; “button” becomes “uttonbay”; and so forth.

b. For words that begin with vowels, add “way” to the end of the word. Thus, “all” becomes “allway”; “one” becomes “oneway”; and so forth.

Use a FlowLayout with a JTextArea for the source text and a separate JtextArea for the translated text. Add a JButton with an event to perform the translation. A sample application is shown next with the text translated to Pig Latin.

To parse the source text, note that you can use the Scanner class on a String. For example the following code

Scanner scan = new Scanner("foo bar zot");

while (scan.hasNext())

{

System.out.println(scan.next());

}

will output

foo

bar

zot


Answer by Tosin Adeniji on 11 Dec, 2017 at 02:23 PM

import java.util.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;

public class EnglishToPigLatin extends JFrame{
	
	private JTextArea inputArea, outputArea;
	private JButton bTranslate;
	
	public EnglishToPigLatin() throws IOException{
		
		super("English to Pig Latin Conversion"); 
		
		Container container = getContentPane();
		container.setLayout(new FlowLayout());
		
		inputArea = new JTextArea(10, 20);
		inputArea.setEditable(true);
		inputArea.setLineWrap(true);
		inputArea.setWrapStyleWord(true);
		container.add(inputArea);
		
		bTranslate = new JButton("Translate");
		container.add(bTranslate);

		bTranslate.addActionListener( 
			new ActionListener(){
				public void actionPerformed(ActionEvent e){
					Scanner sc = new Scanner(inputArea.getText());
					String output = "";

					while (sc.hasNext())
						output += toPigLatin(sc.next()) + " ";

					outputArea.setText(output);
				}
			}
		);	
		
		outputArea = new JTextArea(10, 20);
		outputArea.setEditable(false);
		outputArea.setLineWrap(true);
		outputArea.setWrapStyleWord(true);
		container.add(outputArea);
		
		setSize(300, 450);
		setVisible(true);
	}

	public static String toPigLatin (String str)
	{
		String result = "";

		if (isVowel(str.charAt(0)))
			result = str + "way";
		else
		{
			for (int i=1; i<str.length(); i++)
				result += str.charAt(i);

			result += str.charAt(0) + "ay";
		}

		return result;
	}

	public static boolean isVowel (char ch)
	{
		String vowels = "aAeEiIoOuU";

		if (vowels.indexOf(ch) == -1)
			return false;
		else
			return true;
	}
	
	public static void main(String args[]){
		try{
			EnglishToPigLatin window = new EnglishToPigLatin();
			window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		}
		catch(Exception e){
			JOptionPane.showMessageDialog(null, "Error" + e, "Error", JOptionPane.ERROR_MESSAGE);
		}
	}
}
0 0

Discussions

Post the discussion improve the above solution.