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;
        }
    }
}
4

4 回答 4

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()方法来返回销量。

于 2013-04-26T19:28:09.327 回答
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() );

    }

}

您发布的版本中有许多错误,包括编译错误。您应该开始使用 Eclipse 之类的 IDE 进行 Java 实验,因为这样的环境会在编程时向您显示错误。

对于你的算法问题。关键是,您需要初始化要比较的变量。我想这就是您((Comparable<String>) albums[0]).compareTo(albums[1]);在代码中尝试使用该行的方法吗?好吧,那条线没有意义。此外,您将专辑数组的索引与专辑的销售价值混合在一起。好吧,看看我的解决方案并研究它。以后,请只发布至少没有编译错误的代码。

于 2013-05-04T07:40:33.060 回答
0

要获得lowestSales设置,您需要将其初始化为更高的值,作为您寻找的真正最低值。这可能是Double.MAX_VALUE您之前发现的最高销售额(假设您修复了错误)。当然你也应该初始化highestSale,也许是0.0。

highestSale 的修复方法是highestSales = i.getSales()在您的循环中分配;

于 2013-04-26T19:29:44.980 回答
-1

您可以在 Album 类中实现 Comparable 接口,如果您可以更改它并简单地调用 Arrays.sort(albums),它将缩短您的数组,您可以将数组的第一个和最后一个元素分别用作最低和最高销量的专辑。


代码将是这样的

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



如果您不能更改专辑类,那么 Grammin 的回答是可以的。

于 2013-04-26T22:31:51.680 回答