Plateau Hausaufgabe bitte um hilfe ;)

Neondream

Aktives Mitglied
sooo leute unsere aufgabe ist es ein programm zu schreiben welches die plateaus in einem array erkennt und bestimmt welches das längste ist und an welcher position es sich befindet....

bsp: 1246663277771

das längste plateau = 7777 an stelle 9

habe vercuht es zu lösen müsste vom konzept her richtig sein aber kommen iwie nur run time errors raus... denke mal das problem müsste vor meiner nase liegen aber ihr kennt das ja dann findet man es erst recht nicht

Java:
public class Plateau 
{

	/**
	 * @param args
	 */
	public static void main(String[] args) 
	{
		
		
		// TODO Auto-generated method stub

		int N = Integer.parseInt(args[0]);
		int [] array; 
		array = new int [N];
		//variable zur bestimmung der anzahl der arrays
		int k = 0;
		//variable & array zur bestimmung der array länge
		int l =0;
		int [] laenge;
		laenge = new int [N]; // <- N muss durch iwas noch ersetzt werden da dieses array ja kürzer sein muss als das haupt array
		// array zur bestimmung der position des arrays
		int [] position;
		position = new int [N];
	
		
		//PLateau bestimmen hierbei k = anzahl der plateaus
		for (int i=0; i < N -1;i++)
		{
			//zur bestimmung des 1st plateaus falls es am anfang liegt
			if (array[i]== array[i+1])
			{
				while (array[i]== array[i+1])
				{
					l++;
					position[i] = i; // <- nochmal überdenken da es überschrieben würde?
					
					if (array[i]> array[i+1])
					{
						k++;
						laenge[i] = l;
						/**
						 * Ausgabe der einzelnen array längen
						 * System.out.println ("Länge des Arrays "+ k + "=" + l);
						 */
					}
				}
				
				l=0;
			}
			//zur bestimmung jedes weiteren plateaus
			if (array[i]< array[i+1]) 
			{
				while (array[i]==array[i+1])
				{
					l++;
					position[i] = i;
					
					if (array [i]> array[i+1])
					{
						k++;
						laenge[i] = l;
						/**
						 * Ausgabe der einzelnen array längen
						 * System.out.println ("Länge des Arrays "+ k + "=" + l);
						 */
					}
				}
				
				l = 0;
			}

		}
		
		// Bestimmung der maximalen länge
		double max = Double.NEGATIVE_INFINITY;
		for (int a = 0; a <= laenge.length-1; a++)
		{
			if (laenge[a] > max)
			{
				max = laenge[a];
			}
		}
		
		System.out.println("Das laengste Plateau hat die Laenge " + max);

		
		/**
		//Test für ausgabe des arrays:
		for (int i=0; i>N-1;i++)
			System.out.println(array[i]);
		
		System.out.println(k);
		*/
	}

}

wäre über hilfreiche tips zur lösung sehr dankbar

nicegreeetz
neon
 
Zuletzt bearbeitet:

javimka

Top Contributor
Wäre hilfreich, wenn du die Exception posten könntest.
Wenn es eine ArrayIndexOutOfBoundsException ist, hast du wahrscheinlich kein Argument übergeben, das in Zeile 13 aber notwendig ist.

Wenn du eine NumberFormatException erhälst, dann ist das Argument entwedr keine Zahl oder eine Zahl, die grösser als 2 Mrd ist, und deshalb nicht in einen Integer verwandelt werden kann.

Wenn du keine Exception erhalten würdest, würdest du in einer Endlos-Schleife stecken bleiben ;)
 

Neondream

Aktives Mitglied
Dankeschön ;)

habe echt vergessen etwas einzugeben :lol:

bekomme auch immerhin keinen runtime error mehr raus....
allerdings arbeitet das programm ewig und es kommt gar nichts bei raus ???:L
quasi hat es sich aufgehangen bis ich auf abrechen gehe bei eclipse

habe s mit 5 und 15 versucht :p

weitere hilfe wäre schön
 

javimka

Top Contributor
Du erstellst ja ein Array, das mit 0en gefüllt wird. Deswegen wird in der ersten while-Schleife der Ausdruck [c]array == array[i + 1][/c] immer true ergeben. i ändert sich innerhalb der Schleife auch nie, deswegen werden immer die gleichen Elemente aus dem Array miteinander verglichen.
 

Neue Themen


Oben