0

How can i make the words in alphabetical order if there are not the same ???

import java.util.Scanner;

public class Alphabetize{

	public static void main (String [] args) {
		
		Scanner input = new Scanner (System.in);
		
		System.out.println("Enter three words");
		
		String Word1, Word2, Word3;
		
		Word1 = input.next();
		Word2 = input.next();
		Word3 = input.next();
		
		boolean A = Word1.matches(Word2);
		boolean B = Word2.matches(Word3);
		boolean C = Word3.matches(Word1);
		boolean D = Word3.matches(Word2);
	
		if (A==true)
		{
			if (B==true)
			if (C==true)	
			if (D==true)
			System.out.println("All three of those words are the same :" + Word1 +" "+ Word2+" "+ Word3);
		}
		else 
		{
			System.out.println("In alphabetical order those are :" + Word1 +" "+ Word2+" "+ Word3 );
		}
	}
}
4
Contributors
12
Replies
13
Views
4 Years
Discussion Span
Last Post by stultuske
1
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

public class Alphabetize {

	public static void main (String [] args) {
		
		Scanner input = new Scanner (System.in);
		
		System.out.println("Enter three words");
		
//		String Word1, Word2, Word3;
//		
//		Word1 = input.next();
//		Word2 = input.next();
//		Word3 = input.next();
		
		// variables are camelCase with first letter lower
		// Classes are CamelCase with first letter capital
		String word1 = input.next();
		String word2 = input.next();
		String word3 = input.next();
		
		// Create a list
		List<String> wordList = new ArrayList<String>();
		
		// Add your words to the list
		wordList.add(word1);
		wordList.add(word2);
		wordList.add(word3);
		
		// Let Collections do the sort..
		Collections.sort(wordList);
		
		// Loop over the sorted list
		System.out.print("In alphabetical order those are: ");
		for (String word : wordList)
			System.out.print(MessageFormat.format("{0} ", word));
		
//		boolean A = Word1.matches(Word2);
//		boolean B = Word2.matches(Word3);
//		boolean C = Word3.matches(Word1);
//		boolean D = Word3.matches(Word2);
	
//		if (A==true)
//		{
//			if (B==true)
//			if (C==true)	
//			if (D==true)
//			System.out.println("All three of those words are the same :" + Word1 +" "+ Word2+" "+ Word3);
//		}
//		else 
//		{
//			System.out.println("In alphabetical order those are :" + Word1 +" "+ Word2+" "+ Word3 );
//		}
	}
}

Output:

Enter three words
foo
bar
rawr
In alphabetical order those are: bar foo rawr

Edited by ztini: n/a

0

Thank you very much

But when i put three same words it says In alphabetical order those are: foo foo foo

0

Since the code have been handed down to you we might as well go with it :-/

Anyway did you notice those those commented lines with tells when all three words are the same
Try to modify the code so that it will first check if all the words are equal then if not sort them

Edited by zeroliken: n/a

0

Can you post your code which is outputting the incorrect values?

If you want to use an if statement, then you need to implement a sorting algorithm. There are many flavors to choose from: http://en.wikipedia.org/wiki/Sorting_algorithm

But, why reinvent the wheel when the Collections class has already done all the work for you?

Furthermore, Collections.sort(List) is a modified merge sort algorithm, which is Omega(n log n) time. Meaning, its very efficient.

http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Collections.html#sort(java.util.List)

0

Thank you very much

But when i put three same words it says In alphabetical order those are: foo foo foo

well ... duh.
about your if statement question: yes, there is.
String implements the comparable interface, so you could use the compareTo method.

run a check on the value returned to check whether or not to switch places

0

appreciate your helping me guys

but is this the right way of using method compare to ?
i knew i have an errors but i couldn't fix them

import java.util.Scanner;

public class Three {

	public static void main (String [] args) {
		
		Scanner input = new Scanner (System.in);
		
		System.out.println("Enter three words");
		
	String s1, s2, s3;
		
		s1 = input.next();
		s2 = input.next();
		s3 = input.next();
	int compare = s1.compareTo(s2 + s3);  
	
	
	if (compare < 0)  
	{
	System.out.print("All three of those words are the same ! " + s1 + " " + s2 + " " + s3);
	}
	else if (compare > 0)  
	{
	System.out.print("In alphabetical order those are:" + s1 + " " + s2 + " " + s3);
	}

	
}
}
0

I think you'll need to
int firstCompare = s1.compareTo(s2);
and
int secondCompare = s1.compareTo(s3);

and this for all your comparisons

0

by using logical operators:

if both have to be true:

if ( expression1 && expression2 )

if (at least) one of them has to be true:

if ( expression1 || expression2 )

or you could add it in a nested if:

if ( expression1 ){
  if ( expression2 ){
  }
}
This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.