Tyler Drinski
Tyler Drinski

Reputation: 11

Java Pig Latin program for school

I am having trouble with my homework for school. We are supposed to write a program that allows a user to input a sentence and then have it translated and displayed in Pig Latin. The display will show the original word on the left side, then a tab, and finally the translated word. I am stuck at the part where the characters in front of the first vowel are moved to the end of the word. For example, in the word "trouble" I can't figure out how to move the 'tr' to the end of the word to make it "oubletr". I would appreciate any help that points me in the right direction. Below is my code so far.

import java.util.Scanner;

public class PigLatinTranslator {

public static void main(String[] args) {

    Scanner input = new Scanner(System.in);

    //Declare string for userSentence and pigLatin
    String userSentence; 

    //Assign vowels to char
    char a = 'a';
    char e = 'e';
    char i = 'i';
    char o = 'o';
    char u = 'u';

    //Ask user for input and save to userSentence variable
    System.out.println("Enter a sentence: ");
    userSentence = input.nextLine();

    //Split the userSentence into an array
    String[] userWords = userSentence.split(" ");

    //This will go through the words and locate vowels
    for(int k = 0; k < userWords.length; k++) {

        //Change letters in userWords to lower case
        String temp = userWords[k].toLowerCase();
        char c = temp.charAt(0); 

            //If first character is equal to a vowel
            if(c == a || c == e || c == i || c == o || c == u) {
                System.out.println(temp + "\t" + temp + "way");
                }

            else {
                //print the ones that start with a consonant
                System.out.println(temp + "\t" + temp + "ay");
            }
    }
}

}

Upvotes: 1

Views: 2150

Answers (2)

Arvind Kumar Avinash
Arvind Kumar Avinash

Reputation: 79025

For example, in the word "trouble" I can't figure out how to move the 'tr' to the end of the word to make it "oubletr".

Do it as follows:

class Main {
    public static void main(String[] args) {
        String str = "trouble", newStr = "";
        String strLowerCase = str.toLowerCase();
        for (int i = 0; i < str.length(); i++) {
            char ch = strLowerCase.charAt(i);
            if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u') {
                newStr = str.substring(i) + str.substring(0, i);
                break;
            }
        }
        System.out.println(newStr);
    }
}

Output:

oubletr

Notes:

  1. Convert the string into the lower case and compare its characters with the lower case vowel letters (i.e. a, e, i, o, u). Alternatively, you can convert the string into the upper case and compare its characters with the upper case vowel letters (i.e. A, E, I, O, U).
  2. String::substring(start) returns a string with all characters starting from the index, start. String::substring(start, end) returns a string with all characters starting from the index, start till the index, end - 1.

Upvotes: 1

JoeChris
JoeChris

Reputation: 231

You can make it easier and use the contains() method so you don't have to do two loops...

String vowels = "aeiou"; // idk if y counts who cares
String message = "trouble";

for (int letter = 0; letter < message.length(); letter++) {
  if (vowels.contains("" + message.charAt(letter))) {
    message = message.substring(letter) + message.substring(0, letter);
    break;
  }
}

System.out.println(message); // oubletr

Upvotes: 1

Related Questions