Reputation: 11
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
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:
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
).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
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