Hilfe bei Programmieraufgabe

Kerstin-Hr

Grünschnabel
Die k größten Elemente
Schreiben Sie ein Mini-Java Programm Max.java, dass zunächst eine natürliche Zahl k und anschließend
eine Menge M von natürlichen Zahlen einliest, solange bis die 0 eingegeben wird.
Ausgegeben werden sollen anschließend die k größten Zahlen der eingelesenen Menge M.

Komme nicht weiter mit meinem Lösungsansatz:
Code:
public class MaxElemente extends MiniJava {
		public static int[] readArray (int k){
			int [] array=new int[k];   
			int i=0;
			while (i<k && array[i]!=0){
				array[i]=read();			                	i=i+1;
			}
		    return array;		
		}
		public static int [] nachFeldfüllung (int[] array, int x){
			for (int i=0; i<array.length; ++i){
				if (array[i]<x)
					x=array[i];
			}
			return array;
		}
		public static void main(String args[]){
			int k =read();  //Anzahl der zu lesenden Elemente
			int[] array=readArray(k);
			int x=read();


Ich bin dankbar für jede Hilfe, also schreib doch was du denkst!Danke
 
Hallo,

in deiner Methode readArray() ist die Bedingung der while-Schleife falsch, weil du überprüfst im Moment eine Stelle im Array, ob da eine 0 drin steht, obwohl noch nichts reingeschrieben wurde. So wie ich die Aufgabe verstanden habe soll eine beliebige Menge an Zahlen eingegeben werden und dann die k-größten Zahlen davon ausgegeben werden, deine Schleife liest aber nur k-Elemente ein.
Was soll eigentlich die Methode nachFeldfüllung (int[] array, int x) machen? Du übergibst dort ein Array und es wird genau so wieder zurückgegeben, wie es übergeben wurde.

MFG zEriX
 
Zurück