3 Zahlen einlesen und nach der Größe Sortieren

  • Themenstarter Themenstarter lidZ1
  • Beginndatum Beginndatum
L

lidZ1

Gast
Hallo zusammen, ich brauche mal eure Hilfe.

Ich möchte gerne mit der Anweisung 3 Zahlen einlesen und nach der Größe Sortieren.

Code:
public class sortieren {

  public static void main( String[] args )  {

    System.out.println( "Zahl1 eingeben und mit Return abschliessen:" );
    int a = 0;
    System.out.println( "Zahl2 eingeben und mit Return abschliessen:" );
    int b = 0;
    System.out.println( "Zahl3 eingeben und mit Return abschliessen:" );
    int c = 0;

    try {
      BufferedReader in = new BufferedReader(
                          new InputStreamReader( System.in ) );
      	a = Integer.parseInt(in.readLine());
	b = Integer.parseInt(in.readLine());
	c = Integer.parseInt(in.readLine());


    } catch( Exception ex ) {
      System.out.println( ex.getMessage() );
    }
  
	if(a+b+c=0) {
	System.out.println("0");

	}		

	else {
	
		if(a>b) {
			
			if(b>c) {

				System.out.println(c);
				System.out.println(b);
				System.out.println(a);

				}
			else {
				System.out.println(b);
				System.out.println(c);
				System.out.println(a);
				}
			}
		else {
		
			if(a>c) {

				System.out.println(c);
				System.out.println(a);
				System.out.println(b);

				}

			else {

				System.out.println(a);
				System.out.println(c);
				System.out.println(b);

				}

			}
		}

  	}
   }

Ich bekomme aber die Fehlermeldung Unexpected Type ( if(a+b+c="0") ). Warum?

Danke
 
Zuletzt bearbeitet von einem Moderator:
weil bei einer if-Abfrage ein Wahrheitswert erwartet wird und keine (was auch immer das ist^^)

=>
Code:
 if(a+b+c==0)
 
Ich persönlich würde das so lösen:

Java:
public static void main(String[] args) {

	int maxValueAmount = 16;

	Scanner sc = new Scanner(System.in);

	int[] ints = new int[maxValueAmount];

	try {

		for (int i = 0; i < maxValueAmount; i++) {

			System.out.println("Bitte Zahl eingeben oder \"x\" zum Sortieren...");

			if (!sc.hasNextLine()) break;

			String s = sc.nextLine();

			if (s.equalsIgnoreCase("x")) break;

			try {

				ints[i] = Integer.parseInt(s);
			} catch (NumberFormatException e) {
				System.err.println(s + " ist keine Zahl!");
			}
		}
	} catch (Exception e) {
	} finally {
		sc.close();
	}

	int m = 0xCAFEBABE;

	int[] unsortedInts = ints;
	boolean[] checkedInts = new boolean[ints.length];
	int[] sortedInts = new int[ints.length];

	for (int i = 0; i < sortedInts.length; i++) {

		int lowest = m;

		for (int j = 0; j < unsortedInts.length; j++)
			if (!checkedInts[j]) if (lowest == m || unsortedInts[j] < unsortedInts[lowest]) lowest = j;
		sortedInts[i] = unsortedInts[lowest];
		checkedInts[lowest] = true;
	}

for (int i : sortedInts)
	if (i != m) System.out.println(i);
}

Nicht getestet, aber sollte passen 😉
 
Zuletzt bearbeitet:
Hier eine sehr einfache Variante, die mit dem BubbleSort arbeitet.
Die Eingabe hab ich mir gespart. Einfach die Werte zum Testen in das intFeld eingeben, oder eine Eingabemethode hizufügen.

Java:
public class Test {

	public static int[] intFeld = {5,3,4,7,6,1,10,1000,99,54,23,12,76,87,456};
	public static boolean change;
	public static int buffer;
	
	public static void sort() {						// Ein schöner kleiner BubbleSort
		do {
			change = false;
			
			for(int a = 0; a< intFeld.length-1; a++) {
				if(intFeld[a] > intFeld[a+1]) {
					buffer = intFeld[a];
					intFeld[a] = intFeld[a+1];
					intFeld[a+1] = buffer;
					change = true;
				}
			}
		} while (change);
	}
	
	public static void ausgabe() {
		for (int a = 0; a<intFeld.length; a++)
			System.out.println("Position "+a+" Inhalt "+intFeld[a]);
	}
	
	public static void main(String[] args) {
		ausgabe();				// Vor dem Sortieren
		sort();
		ausgabe();				// Nach dem Sortieren
	}
}

Soll nur als Anregung dienen.
Ich hoffe, es hilft Dir.

Pentalon
 

Zurück
Oben