2013-04-26 3 views
0

판매 또는 변수를 배열과 비교할 수있는 코드를 가진 사람이 누구일까요? 최저 판매 품목. 나는 여러 가지 일을 시도했지만 제대로 작동하지 않습니다. 여기 배열에서 판매를 비교하여 가장 높고 낮은 판매를 얻는 방법

내 코드입니다, 내가 가장 걱정입니다 물건은 아래에 있습니다 :

package album; 

public class Certifier { 

    public static void main(String[] args) { 

Album zero = new Album(0, "Dark Side of the Moon", "Pink Floyd", 1973, 50000000); 

     System.out.println("The album information for ablum 0 is: " + zero.toString()); 

     Album one = new Album(1, "Superficial", "Heidi Montag", 2010, 658); 

     System.out.println("The album information for ablum 1 is: " + one.toString()); 

     Album two = new Album(2, "Fearless", "Taylor Swift", 2011, 3200000); 

     System.out.println("The album information for ablum 2 is: " + two.toString()); 

     Album three = new Album(3, "Made Up", "Sample Band", 2011, 1300000); 

     System.out.println("The album information for ablum 3 is: " + three.toString()); 

     Album four = new Album(4, "Concerto One Night", "Andrea Bocelli", 2011, 500008); 

     System.out.println("The album information for ablum 4 is: " + four.toString()); 

     Album[] albums = new Album[4]; 
      albums[0] = zero; 
      albums[1] = one; 
      albums[2] = two; 
      albums[3] = three; 
      albums[4] = four; 


      ((Comparable<String>) albums[0]).compareTo(albums[1]); 

     System.out.println("The highest selling album is"); 
     for (int i=0; i< Album[].length; i++) { 
      double highestSales; 
      if (i.getSales()<highestSales) 
       highestSales= i; 
      return highestSales; 

     } 

    System.out.println("The lowest selling album is"); 
     for (int i=0; i< Album[].length; i++) { 
      double lowestSales; 
      if (i.getSales()<lowestSales) 
       lowestSales= i.getSales(); 
      return i.getName + i.getArtist; 
     } 
    } 
} 
+1

여기에 게시하기 전에 컴파일 할 코드를 가져와야합니다. 예를 들어, for 루프에서'i'는 객체가 아닌'int'입니다. 거기에서 메소드를 호출 할 수 없습니다. 컴파일러 오류를 따라 컴파일하면 논리 오류 작업을 시작할 수 있습니다. –

+0

아마도 가장 높은 값과 가장 낮은 값을 검색하여 찾을 수 있습니까? –

+0

하지만 시작하려면 가장 낮은 값과 가장 높은 값을 설정해야합니다. 일반적으로 가장 높은 수를 음수로, 가장 낮은 수를 매우 큰 수로 설정합니다. (또는 둘 모두 0 요소에서 초기화하십시오.) –

답변

0
Album highestSellingAlbum; 
double highestSales = 0; 

for (int i=0; i< albums.length; i++) 
{ 
    if (albums[i].getSales() > highestSales) 
    { 
    highestSales = albums[i].getSales(); 
    highestSellingAlbum = albums[i]; 
    } 
} 

highestSellingAlbum 지금 Album 클래스가 적절한 getSales() 방법을 가지고 가정, 최고 판매 앨범이 포함됩니다 판매를 반환합니다.

+0

이것은 나를 위해 작동하지 않습니다 –

0

lowestSales을 설정하면 더 낮은 값으로 초기 값을 설정해야합니다. Double.MAX_VALUE 또는 이전에 찾은 highestSale 일 수 있습니다 (버그를 수정한다고 가정). 물론 highestSale을 0.0으로 초기화해야합니다.

highestSale의 수정 사항은 루프에 highestSales = i.getSales()을 할당하는 것입니다.

+0

그냥 찾고있는 가장 높은 가장 낮은 판매량을 코드에서 가지고있는 5 가지 옵션 중 –

+0

내 제안은 값이 가장 높고 가장 낮은 매출을 정확하게 발견 할 것입니다. 앨범의 정보가 필요하면 그램 민의 제안을 사용하십시오. – luksch

-1

변경할 수 있고 단순히 Arrays.sort(albums)을 호출하면 클래스의 Comparable Interface를 구현할 수 있습니다. 배열의 첫 번째 요소와 마지막 요소를 각각 가장 낮고 가장 높은 판매 앨범으로 사용할 수 있습니다. 당신이 Grammin의 대답은 괜찮 다음 앨범 클래스를 변경할 수없는 경우


코드는이

public class Album implements Comparable<Album>{ 
    /* 
     your existing code here 
    */ 
    public int compareTo(Album compareAlbum) { 
     int compareSales = ((Album) compareAlbum).getSales(); 
     return this.sales - compareSales 
    } 
} 



같은 몇 가지 일이 될 것입니다.

+0

앨범 클래스는 기본적으로 내 세터와 게터가 있기 때문에 변경할 수 있다고 생각합니다. –

+0

그런 다음 위의 코드를 사용하면 작동합니다 –

0

여기 완전하고 작업 버전 :

package album; 


public class Certifier { 

    public static void main(String[] args) { 

     Album zero = new Album(0, "Dark Side of the Moon", "Pink Floyd", 1973, 50000000); 
     System.out.println("The album information for ablum 0 is: " + zero.toString()); 

     Album one = new Album(1, "Superficial", "Heidi Montag", 2010, 658); 
     System.out.println("The album information for ablum 1 is: " + one.toString()); 

     Album two = new Album(2, "Fearless", "Taylor Swift", 2011, 3200000); 
     System.out.println("The album information for ablum 2 is: " + two.toString()); 

     Album three = new Album(3, "Made Up", "Sample Band", 2011, 1300000); 
     System.out.println("The album information for ablum 3 is: " + three.toString()); 

     Album four = new Album(4, "Concerto One Night", "Andrea Bocelli", 2011, 500008); 
     System.out.println("The album information for ablum 4 is: " + four.toString()); 

     Album[] albums = new Album[5]; //we have 5 albums! 
      albums[0] = zero; 
      albums[1] = one; 
      albums[2] = two; 
      albums[3] = three; 
      albums[4] = four; 

     Album highestSellingAlbum = zero; //must be initialized with any of the 5 
     Album lowestSellingAlbum = zero; //must be initialized with any of the 5 

     for (int i=0; i< albums.length; i++) { 

      if (albums[i].getSales() > highestSellingAlbum.getSales()){ 
       highestSellingAlbum = albums[i]; 
      } 
      if (albums[i].getSales() < lowestSellingAlbum.getSales()){ 
       lowestSellingAlbum = albums[i]; 
      } 
     } 
     System.out.println("The highest selling album is " + highestSellingAlbum); 
     System.out.println("The highest sales is " + highestSellingAlbum.getSales()); 

     System.out.println("The lowest selling album is " + lowestSellingAlbum); 
     System.out.println("The lowest sales is " + lowestSellingAlbum.getSales()); 

    } 

} 

컴파일 오류를 포함하여 게시 된 버전에서 많은 오류가 있었다. 이러한 환경은 프로그래밍 중 오류를 표시하기 때문에 Java 실험을 위해 Eclipse와 같은 IDE를 사용해야합니다.

귀하의 알고리즘 문제가 있습니다. 요점은 비교할 변수를 초기화해야한다는 것입니다. 제 생각에 그 코드로 그 라인 ((Comparable<String>) albums[0]).compareTo(albums[1]);을 시도한 것입니까? 글쎄, 그 선은 말이 안되는구나. 또한 앨범 배열의 색인을 앨범의 판매 값과 혼합했습니다. 글쎄, 내 솔루션을보고 그것을 공부하십시오. 나중에 적어도 컴파일 오류가없는 코드 만 게시하십시오.

관련 문제