Total 'new be' braucht hilfe

Matze

Weltenwanderer
Das hatte ich dir ja auch schon erklährt.

Wie wäre es, wenn du einfach
Java:
for (int k= 1; k < preis.lenght; k++){
  if(npreis > preis[k] && npreis != 0) npreis = preis[k];
}
machst?
 

Edocsil

Grünschnabel
int npreis = preis[0];
for (int k= 1; k < preis.length; k++){

if(npreis > preis[k] && npreis != 0) npreis = preis[k];

}

gibt leider immer noch die 0 als niedrigste stelle aus :/
k deklariert ja auch die stelle im array wo er beginnt oder hab ich da was falsch verstanden?
 

Matze

Weltenwanderer
Hast du schon richtig verstanden. Stimmt, wenn die erste Stelle indeinem Array eine 0 ist, dann kann es ja nicht anders sein.
Versuche mal statt
Java:
 int npreis = preis[0];
das hier
Java:
 int npreis = 999999;

Ist jetzt zwar keine schöne Lösung, müsste aber gehen.
 

Edocsil

Grünschnabel
schön wäre es gewesen allerdings geht das auch nicht, dies hat aber nen logischen grund egal welche zahl ich bei

int npreis = preis[0];

reinschreib er sucht aus dem Array immer die nächst tiefere er sieht die nullen die ausgeführt werden, wenn ich das Array abbreche mit "0" so wie Sascha das grad erklärt hat. Also wird er immer die Nullen finden.
 

Matze

Weltenwanderer
reinschreib er sucht aus dem Array immer die nächst tiefere er sieht die nullen die ausgeführt werden, wenn ich das Array abbreche mit "0" so wie Sascha das grad erklärt hat. Also wird er immer die Nullen finden.
Das hatte ich dir vorher auch schon geraten zu überprüfen :rolleyes:
Kann es sein, dass er die 0 erkennt, dann die Schleife abbricht, aber im Array an den Stellen, an der die Schleife nicht mehr war schon vorher nullen waren?

Ok, letzter Versuch:
Java:
if ( j != 0 ){
  preis[i] = j;
}

Versuch das mal in deiner for-Schleife
 

Edocsil

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

					
					}


Muss dir leider sagen bringt auch nichts :(
 

Matze

Weltenwanderer
War eigentlich so gedacht, dass du das andere If-Konstrukt und preis[ i ] = j; entfernst.

Na ja, wenn das auch nicht geht, dann hab ich keine Ahnung, was du falsch machst. Vieleicht solltest du dir eine andere Lösung für deine Aufgabe suchen.
 

Edocsil

Grünschnabel
stimmt sorry habs übersehen, leider kein weiterer erfolg.

Ich kann mir nicht vorstellen das das nicht gehen soll das man ihm schlichtweg sagt "ey alda nimm keine null" ^.^
 

Matze

Weltenwanderer
Ich kann mir nicht vorstellen das das nicht gehen soll das man ihm schlichtweg sagt "ey alda nimm keine null" ^.^
Sollte eigentlich gehen. Ich denke, dass Problem liegt in der Programmlogik. Du weißt ja jetzt, dass warscheinlich immer 0 auftreten. Mit diesem Wissen solltest du nochmal über deine Algorytmen nachdenken ;)
 
Zuletzt bearbeitet:

zerix

Hausmeister
Moderator
Schau mal hier
Java:
import java.util.Scanner;

public class MinExample
{
  public static void main(String[] args)
  {
    int[] preis = new int[15];
    Scanner sc = new Scanner(System.in);
    for (int i = 0; i < preis.length; i++)
    {
      System.out.print("Bitte Artikelpreis in Cent eingeben: ");
      int j = sc.nextInt();
      if (j == 0)
      {
        break;
      }
      preis[i] = j;
    }

    
    System.err.println("Kleinster Wert: "+getMinFromArray(preis));
  }

  private static int getMinFromArray(int[] intArray){
    
    if(intArray == null || intArray.length == 0)
      return -1;
    
    int min = intArray[0];
    for (int i = 1; i < intArray.length && intArray[i] != 0; i++)
    {
      if(min>intArray[i]){
        min = intArray[i];
      }
    }
    
    return min;
  }
 
  
}


Noch so nebenbei. Diese Schleife funktioniert auch nicht.
P.S.:
Es gibt eine Schleife die den höchsten wert ermittelt, allerdings die funktioniert ohne probleme.


Zitat:
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" );


MFG

Sascha