-
Help with String
I have written a program that asks the user to input a five-letter word and then will return all valid three letter words from the original word. My problem is that I am getting nothing to print, I don't know if I am doing the comparison properly.
Code:
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.Scanner;
public class ThreesFromFive
{
public static void rearrangeAndOuput() throws FileNotFoundException
{
String word = new String();
String threeLetterWord = new String();
StringBuffer wordBuffer = new StringBuffer();
Scanner input = new Scanner(System.in);
Scanner inFile = null;
//0pens file to be read
try
{
inFile = new Scanner(new FileReader("../JavaHomework/chapt29_18/threeletterwords.txt"));
}//end try
catch (FileNotFoundException e)
{
System.err.println("File not found.");
System.exit(1);
}//end catch
System.out.print("Enter a five letter word:");
word = input.next();
if (word.length() != 5)
{
System.out.print("Please enter a five letter word:");
word = input.next();
}
System.out.print("The three letter words that can be made from\n");
System.out.print("the word you typed in is:\n");
//create three letter words
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
for (int k = 0; k < 5; k++)
{
//create new three letter word
wordBuffer.append(word.charAt(i));
wordBuffer.append(word.charAt(j));
wordBuffer.append(word.charAt(k));
threeLetterWord = wordBuffer.toString().toLowerCase();
while (inFile.hasNext())
{
//check to see if word is valid three letter word
if (threeLetterWord.equals(inFile.next()))
System.out.printf("%s\n", threeLetterWord);
}
//re-initialize wordBuffer to create new word
wordBuffer = new StringBuffer();
}//end for
}//end for
}//end for
}//end rearrangeAndOutput
public static void main(String[] args) throws FileNotFoundException
{
rearrangeAndOuput();
}
}
Thanks
Felissa:p
-
Instead of constructing all the permutations of 3 letter words instead can you not scan every word of the file containing 3 letter words and simply check if the 5 letter input contains all the characters in the 3 letter word.
Code:
for each 3 letter word : word3
for each character in word3 : ch
check if input5 contains ch
if all the characters of word3 are present in input5 print it
Greetings.
Eric
-
Thank you for the suggestion, it didn't work though. I think it has something to do with the way I'm reading in the file or the way I'm comparing the strings.
Greetings.
Felissa:p