import java.util.*;
public class Bubble{
private final static int maxNumber = 100;
private int[] numberArray;
private int numberIndex;
private Scanner sc;
private boolean quit = false;
public void init(){
sc = new Scanner(System.in);
numberArray = new int[maxNumber];
numberIndex = 0;
}
public void printUserMessage(){
System.out.println("Write a few numbers.");
System.out.println("To sort the array, type ':S'");
System.out.println("To end the input and sort the array, type ':Q'");
System.out.println("To print the current array, type ':P'");
}
public void getUserInput(){
while(numberIndex < maxNumber && !quit)
{
// If the user has entered a number, call the getNumber-method.
if(sc.hasNextInt()){
getNumber();
} else {
// If not, get the string.
getCommand();
}
}
}
private void getNumber(){
numberArray[numberIndex] = sc.nextInt();
numberIndex++;
}
private void getCommand(){
String command = sc.next();
if(command.startsWith(":")){
char commandChar = command.charAt(1);
switch(commandChar){
case 'Q':
bubbleSort();
printArray();
quit = true;
break;
case 'P':
printArray();
break;
case 'S':
bubbleSort();
break;
default:
printUserMessage();
}
}
}
private void printArray(){
System.out.print("[");
for(int number: numberArray){
System.out.print(number + " ");
}
System.out.println("]");
}
public void bubbleSort(){
boolean changeHasHappened = true;
while(changeHasHappened){
changeHasHappened = false;
for(int i = 0; i < numberIndex-1; i++)
if(numberArray[i] > numberArray[i+1]){
int temp = numberArray[i];
numberArray[i] = numberArray[i+1];
numberArray[i+1] = temp;
changeHasHappened = true;
}
}
}
public static void main (String[] arg){
Bubble b = new Bubble();
b.init();
b.printUserMessage();
b.getUserInput();
}
}
25 juni 2009
Java-bubbel
Svarade på ett inlägg på http://www.javaforum.se/jforum/ och för att göra det lättare för andra som sliter med liknande uppgifter på sina Java-kurser så postar jag lösningen på bloggen också.
Prenumerera på:
Kommentarer till inlägget (Atom)

Inga kommentarer:
Skicka en kommentar