2012-01-29 69 views
0

我正在製作一個程序,讓用戶放入他們的Class ID,然後輸入銷售的盒子數量。我試圖讓計算機最終告訴我十個班中哪些班最多。但我似乎無法弄清楚如何讓程序告訴我十個中哪一個盒子最多。 我想我需要找到數組中最大的數字,如果這甚至可能?java中數組最大的數字?

import java.util.*; 

public class Boxs { 

int ID, boxs; 

public static void main(String[] args) { 
    int p = 0; 
    Scanner scan = new Scanner(System.in); 

    Boxs[] bx = new Boxs[10]; 

    for (int i = 0; i <= 9; i++) { 
     bx[i] = new Boxs(); 
     System.out.print("Enter Class ID: "); 
     bx[i].ID = scan.nextInt(); 
     System.out.print("Enter boxs sold: "); 
     bx[i].boxs = scan.nextInt(); 
    } 

    int temp = 0; 
    int temp2 = 0; 
    for (int j = 0; j < 9; j++) { 
     for (int h = 0; h < 9; h++) { 
      if (bx[h].boxs > bx[h+1].boxs) { 
       temp2 = bx[p].boxs; 
       bx[h].boxs = bx[p+1].boxs; 
       bx[p+1].boxs = temp; 
       temp = bx[h].ID; 

       bx[h].ID = bx[p+1].ID; 
       bx[h+1].ID = temp2; 

       System.out.println(bx[h].boxs); 
       System.out.println(bx[h+1].boxs); 
      } 
     } 
    } 

    System.out.println("The Class ID with the most boxes is: " + bx[0].ID + " and sold " + bx[0].boxs + " boxs."); 
} 
} 
+2

可能重複:HTTP://stackoverflow.com/questions/1484347/java-max-min-value-in-an-array – tenorsax 2012-01-29 00:28:12

回答

1

不知道如果我把你的問題的權利(因爲你的語句代碼衝突),但你可以用下面的方法來找出賣箱子的數量最多:

int ind = 0; 
for (int j = 1; j < bx.length; j++){ 
    if(bx[j].boxs>bx[ind].boxs) 
    { 
     ind=j; 
    }    
}  

System.out.println("The Class ID with the most boxes is: " 
       + bx[ind].ID + " and sold " + bx[ind].boxs + " boxs."); 
+1

做出更好的回答解釋將是一件好事。該算法首先假定第一個索引具有最多的盒子(存儲爲ind),然後開始檢查更多盒子的下列索引,如果它找到一個包含更多盒子的索引,則假定新索引具有met盒子,ind是改爲這個索引,當最後一個索引被選中時,ind會包含最多的索引。 – 2012-01-29 09:37:11

0

這裏這個簡單的算法。

/** 
* sortiert ein Array mit heapsort 
* @param a das array 
*/ 
private static void heapSort(int[] a) { 
     generateMaxHeap(a); 

     //hier wird sortiert 
     for(int i = a.length -1; i > 0; i--) { 
       vertausche(a, i, 0); 
       versenke(a, 0, i); 
     } 
} 

/** 
* Erstellt einen MaxHeap Baum im Array 
* @param a das array 
*/ 
private static void generateMaxHeap(int[] a) { 
     //starte von der Mitte rückwärts. 
     for(int i = (a.length/2) - 1; i >= 0 ; i--) { 
       versenke(a, i, a.length); 
     } 
} 

/** 
* versenkt ein element im baum 
* @param a Das Array 
* @param i Das zu versenkende Element 
* @param n Die letzte Stelle im Baum die beachtet werden soll 
*/ 
private static void versenke(int[] a, int i, int n) { 
     while(i <= (n/2) - 1) { 
       int kindIndex = ((i+1) * 2) - 1; // berechnet den Index des linken kind 

       //bestimme ob ein rechtes Kind existiert 
       if(kindIndex + 1 <= n -1) { 
         //rechtes kind existiert 
         if(a[kindIndex] < a[kindIndex+1]) { 
           kindIndex++; // wenn rechtes kind größer ist nimm das 
         } 
       } 

       //teste ob element sinken muss 
       if(a[i] < a[kindIndex]) { 
         vertausche(a,i,kindIndex); //element versenken 
         i = kindIndex; // wiederhole den vorgang mit der neuen position 
       } else break; 
     } 
} 

/** 
* Vertauscht die arraypositionen von i und kindIndex 
* @param a Das Array in dem getauscht wird 
* @param i der erste index 
* @param kindIndex der 2. index 
*/ 
private static void vertausche(int[] a, int i, int kindIndex) { 
     int z = a[i]; 
     a[i] = a[kindIndex]; 
     a[kindIndex] = z; 
} 

然後,您可以打印短數組的第一個元素。 來源:Wiki