Total 'new be' braucht hilfe

Edocsil

Grünschnabel
Hi ich bin gerade ein Programm am erstellen. Bei der for schleife die ich gleich Poste soll ein Array durchsucht werden nach den geringsten zahlen wert, leider funktioniert dieses nicht ich krieg immer den zahlen wert 0 raus, bin aber zu blind/blöd den Fehler zu finden ^.^
(muss wohl nicht erwähnen das in dem Array keine null vorkommt ;) )

hier nun entsprechende schleife:
int npreis =0;
for (int k= 0; npreis > preis[k]; k++){
npreis = preis[k];
}

System.out.println("Der niedrigste Preis beträgt" + npreis + "Cent" );

Wäre für jede Hilfe dankbar!

P.S.:
Es gibt eine Schleife die den höchsten wert ermittelt, allerdings die funktioniert ohne probleme.

int hpreis =0;
for (int l = 0; hpreis < preis[l]; l++)
{
hpreis = preis[l];
}
//sucht den höchsten preis aus dem array preis
System.out.println("Der höchste Preis beträgt" + hpreis + "Cent" );
 

Matze

Weltenwanderer
Wenn du dir die einzelnen Schritte ausgeben lassen würdest, würdest du es sehen:

npreis = 0;
npreis > erster Wert aus Arry (vermutlich größer als0)
Ergebniss = falsch -> schleife beenden

Klar soweit oder brauchst du hilfe bei der weitern realisierung?
 

Edocsil

Grünschnabel
hmm wäre das dann nicht eine if anweisung ? (sorry bin zwar sehr lernwillig aber auch manchmal extrem begriffsstutzig) ^.^
 

Matze

Weltenwanderer
Ich habe damit dir nur zeigen wollen warum immer 0 herrauskommt. Das sind nämlich die Schritte, die durchgeführt werden ^^, der 2. Teil des For-Kopfes ist nämlich nix anderes als ein If Konstrukt :p

Wäre es nicht so einfacher:
Java:
int npreis = preis[0];
for (int k= 1; k < preis.lenght; k++){
  if(npreis > preis[k]) npreis = preis[k];
}

Fände ich jetzt schöner, da es übersichtlicher und leicht zu erweitern ist. Wenn du allerdings auf jede Nanosekunde Wert legst, musst du deine Version korrigieren
 
Zuletzt bearbeitet:

Edocsil

Grünschnabel
also soweit ist der fehler behoben, das nächste problem ergibts sich daraus das man das array mit einer 0 beendet und die wird auch mit eingelesen

Code:
	for(i=0; i<preis.length; i++){
					System.out.print("Bitte Artikelpreis in Cent eingeben: ");
					j = sc.nextInt();
					preis[i] = j;
					
					if ( j == 0  ){
						break;
					}
					}

muss ich das if ausserhalb der for schleife setzen? bzw wenn ich das machen wirft er ja logischer weise das j als fehler weil er es nicht mehr zuordnen kann
 

Anime-Otaku

Erfahrenes Mitglied
ein break beendet die Schleife, egal ob die Bedingung im if noch stimmt. Wenn du einfach willst, dass die Schleife weiterzählt (also bei dem Fall nichts mehr macht) benutze ein continue
 

Edocsil

Grünschnabel
weiter laufen tut sie ja ohne probleme sie soll maximal 15 mal durchlaufen ergo, "max. 15 Artikel einscannen " oder "wird gestoppt mit 0"

nur i-wie zählt er die 0 halt dann mit rein und das will ich nicht ^.^

@ jannaef
wenn ich das anwende erkennt er j nicht.
*grübel* Nur vorher deklarieren bringt ja nichts und die deklaration nach oben zu ziehen bringts auch nicht weil er dann ja preis[ i ] ned zuordnen kann :/ *hmm*


(wie schon gesagt bin begriffsstutzig, aber ich geb nicht auf! ^.^)
 

Matze

Weltenwanderer
Hab zwar jeden überblich verloren, aber mach doch einfach statt:
Java:
preis[i] = j;

if ( j == 0 ){
  break;
}
das hier:

Java:
if ( j == 0 ){
  break;
}

preis[i] = j;
 

Edocsil

Grünschnabel
das ändert leider nichts er liest die 0 immer noch ein und setzt diese mit ins arry egal wo der break steht :/ auf die idee kam ich auch schon einfach das ding zu verschieben ^.^
 

Neue Beiträge