2016-04-20 10 views
-1

Also beende ich gerade diese Aufgabe für den Unterricht. Wir verwenden sequenzielle und binäre Suchvorgänge, um Kunden nach der gewünschten Teilenummer zu fragen. Dann geben Sie zurück, ob es gefunden wurde oder nicht, und falls gefunden, geben Sie den Preis mit der angeforderten Teilenummer zurück. Also gibt es 2 Arrays, eins mit ganzen Zahlen für die Teilenummer und ein doppeltes Array für den Preis. Also nach der sequentiellen und binären Suche nach der Teilenummer suchen, wie bekomme ich den Preis für diese Teilenummer?Wie bekomme ich den Preis aus einem Array?

public class InventoryData 
{ 
    Scanner input = new Scanner(System.in); 

    int[] partNum = new int [200]; 
    double[] priceArray = new double[200]; 
    int partsCount = 0; 
    int customerPart; 
    int partPrice; 
    String inventoryPricing; 
    double customerPrice; 

    public InventoryData(String File) 
    { 
     inventoryPricing = "file"; 
    } 

    public void loadArrays() 
    { 
     try 
     { 
      Scanner infile = new Scanner(new FileInputStream("file")); 
      while(infile.hasNext()) 
      { 
       partNum[partsCount] = infile.nextInt(); 
       priceArray[partPrice] = infile.nextDouble(); 
       ++partsCount; 
      } 
      infile.close(); 
     } 
     catch (IOException ex) 
     { 
      //If file has problems, set the count to -1 
      partsCount = -1; 
      ex.printStackTrace(); 
     } 
    } 

    public void seqSearch() 
    { 
     System.out.println("What part number are you looking for?"); 
     customerPart = input.nextInt(); 
     for(int i=0; i < partNum.length; i++){ 
      if(customerPart == partNum[i]) 
       System.out.println("Sequential search found part" + customerPart); 

     } 
    } 
    public int binarySearch() 
    { 
     int first = 0; 
     int mid=0; 
     int last = partsCount - 1; 
     boolean found = false; 
     System.out.println("What part number are you looking for?"); 
     customerPart = input.nextInt(); 

     while(first <= last && !found) 
     { 
      mid = (last + first) /2; 
      if(partNum[mid] == customerPart) 
      { 
       found = true; 
      } 
      else if(partNum[mid] < customerPart) 
       first = mid +1; 
      else 
       last = mid-1; 
     } 
     if(!found) 
     { 
      mid = -1; 
     } 
     return mid; 
    } 
     public double getPrice() 
     { 
      return customerPrice; 
     } 
}// end of inventory data class 
+0

Stimmen die Teile- und Preis-Arrays überein? '[0] - part = [0] - price' ... – brso05

+0

Die' binary' Suche wird nicht funktionieren, wenn das Teile-Array nicht sortiert ist ... – brso05

+0

Nun hatte ich meinen Lehrer über die binäre Suche schauen, und er sagte es war richtig. Es basiert auf einem Flussdiagramm, das er uns als Beispiel gab –

Antwort

0

1. lassen Sie mir etwas vorschlagen: , wenn Sie lernen, wie man Anwendungen entwickeln dann in Ordnung, wenn yo Roll-out som Produkt versucht dann darüber nachdenken, nicht so eine Logik, die Ansicht, dass je größer die Liste , desto mehr hart wäre über das ganze Array zu durchlaufen, bis Sie vielleicht etwas ...

zurück auf Ihre Frage: :) ​​

Sie sind fast da ...

in der for-Schleife müssen den Array-Preisbekommenund das Element am Index erhalten ..

der Trick hier versteckt: priceArray [i]

Look:

for(int i=0; i < partNum.length; i++){ 
    if(customerPart == partNum[i]){ 
     System.out.println("Sequential search found part" + customerPart); 
     // here 
     System.out.println("and the price is: " + priceArray[i]); 
    } 
} 

so werden Sie den Wert des Preises verwandten erhalten zur Benutzereingabe ...

Verwandte Themen