数组排序打印和求和

时间:2013-04-17 21:04:38

标签: java arrays sorting printing

打印此阵列的最简单方法是将产品编号,名称部门等分解为每个移动电话,然后重新打印按产品名称排序的相同信息。我已经尝试了几种不同的方法,并且我已经通过转发日期进行分配,但仍需要弄清楚本周末即将进行的任务。当我尝试在MobilePhone类上实现比较器时,它迫使我将其设为抽象或使用@override但我无法弄清楚要覆盖的位置或内容以使其工作,因为抽象类会导致许多其他问题。

package InventoryPro2;

import java.util.*;

class MobilePhone {

    private double productNumber; // Variables
    private String name;
    private String department;
    private double unitsInStock;
    private double unitPrice;

    public MobilePhone() {
        this(0.0, "", "", 0.0, 0.0);
    }

    public MobilePhone(double productNumber, String name, String department,
            double unitsInStock, double unitPrice) { //assign variables
        this.productNumber = productNumber;
        this.name = name;
        this.department = department;
        this.unitsInStock = unitsInStock;
        this.unitPrice = unitPrice;
    }

    public double getproductNumber() { // retrieve values
        return productNumber;
    }

    public String getname() {
        return name;
    }

    public String getdepartment() {
        return department;
    }

    public double getunitPrice() {
        return unitPrice;
    }

    public double getunitsInStock() {
        return unitsInStock;
    }

    public void setproductNumber(double productNumber) {
        this.productNumber = productNumber;
    }

    public void setname(String name) {
        this.name = name;
    }

    public void setdepartment(String department) {
        this.department = department;
    }

    public void setunitPrice(double unitPrice) {
        this.unitPrice = unitPrice;
    }

    public void setunitsInStock(double unitsInStock) {
        this.unitsInStock = unitsInStock;
    }

    public double gettotalInv() {
        return getunitPrice() * getunitsInStock();
    }
}

public class InventoryPro2 {

    MobilePhone mobilephone = new MobilePhone();

    public static void main(String args[]) {


        System.out.println("Mobile Phone Inventory Program");
        System.out.println();//skips a line

        MobilePhone[] phones = new MobilePhone[5];


        phones[0] = new MobilePhone();
        phones[0].setproductNumber(1);
        phones[0].setname("Motorola");
        phones[0].setdepartment("Electronics");
        phones[0].setunitPrice(150.10);
        phones[0].setunitsInStock(98);

        phones[1] = new MobilePhone();
        phones[1].setproductNumber(2);
        phones[1].setname("Samsung");
        phones[1].setdepartment("Electronics");
        phones[1].setunitPrice(199.99);
        phones[1].setunitsInStock(650);

        phones[2] = new MobilePhone();
        phones[2].setproductNumber(3);
        phones[2].setname("Nokia");
        phones[2].setdepartment("Electronics");
        phones[2].setunitPrice(200.25);
        phones[2].setunitsInStock(125);

        phones[3] = new MobilePhone();
        phones[3].setproductNumber(4);
        phones[3].setname("LG");
        phones[3].setdepartment("Electronics");
        phones[3].setunitPrice(100.05);
        phones[3].setunitsInStock(200);

        phones[4] = new MobilePhone();
        phones[4].setproductNumber(5);
        phones[4].setname("IPhone");
        phones[4].setdepartment("Electronics");
        phones[4].setunitPrice(299.99);
        phones[4].setunitsInStock(150);

        System.out.println("Order of inventory before sorting:");
        System.out.println();

    }
}

(另外,从数组的每个部分中获取一条信息的最佳方法是什么,例如totalInv和要打印的所有数字的总数?)我在这里有不必要的代码还是我做了所有的事情到目前为止?我不得不说,到目前为止,以在线格式学习这种编码语言并不是一种非常愉快的经历。

2 个答案:

答案 0 :(得分:0)

1 - 要打印MobilePhone类的内容:覆盖默认的toString方法,如下所示:

@Override
public String toString() {
    return "MobilePhone [productNumber=" + productNumber +
    ", name=" + name + ']'; // add more info if needed
}

2 - 允许按名称排序:具有MobilePhone类实现Comparable界面 这样:

class MobilePhone implements Comparable {
  ...

    @Override 
    public int compareTo(Object o) {
        MobilePhone m = (MobilePhone) o; 
        return (this.name.compareTo(o.name));
    }
}

编辑:打印您可以执行的MobilePhone对象数组:

System.out.printf("Phones: %s%n", Arrays.toString(phones));

答案 1 :(得分:0)

以下是按名称排序的方法

import java.util.Arrays;
import java.util.Comparator;

public class AppInventoryPro2 {

    public static void main(String... args) {

        System.out.println("Mobile Phone Inventory Program");
        System.out.println();// skips a line

        MobilePhone[] phones = new MobilePhone[5];

        phones[0] = new MobilePhone();
        phones[0].setproductNumber(1);
        phones[0].setname("Motorola");
        phones[0].setdepartment("Electronics");
        phones[0].setunitPrice(150.10);
        phones[0].setunitsInStock(98);

        phones[1] = new MobilePhone();
        phones[1].setproductNumber(2);
        phones[1].setname("Samsung");
        phones[1].setdepartment("Electronics");
        phones[1].setunitPrice(199.99);
        phones[1].setunitsInStock(650);

        phones[2] = new MobilePhone();
        phones[2].setproductNumber(3);
        phones[2].setname("Nokia");
        phones[2].setdepartment("Electronics");
        phones[2].setunitPrice(200.25);
        phones[2].setunitsInStock(125);

        phones[3] = new MobilePhone();
        phones[3].setproductNumber(4);
        phones[3].setname("LG");
        phones[3].setdepartment("Electronics");
        phones[3].setunitPrice(100.05);
        phones[3].setunitsInStock(200);

        phones[4] = new MobilePhone();
        phones[4].setproductNumber(5);
        phones[4].setname("IPhone");
        phones[4].setdepartment("Electronics");
        phones[4].setunitPrice(299.99);
        phones[4].setunitsInStock(150);

        System.out.println("Order of inventory before sorting:");
        System.out.println(Arrays.toString(phones));

        Arrays.sort(phones, new Comparator<MobilePhone>() {
            @Override
            public int compare(MobilePhone mp1, MobilePhone mp2) {
                return mp1.getname().compareTo(mp2.getname());
            }
        });

        System.out.println("Order of inventory after sorting by name:");
        System.out.println(Arrays.toString(phones));
    }
}

class MobilePhone {

    private double productNumber; // Variables
    private String name;
    private String department;
    private double unitsInStock;
    private double unitPrice;

    public MobilePhone() {
        this(0.0, "", "", 0.0, 0.0);
    }

    public MobilePhone(double productNumber, String name, String department,
            double unitsInStock, double unitPrice) { // assign variables
        this.productNumber = productNumber;
        this.name = name;
        this.department = department;
        this.unitsInStock = unitsInStock;
        this.unitPrice = unitPrice;
    }

    public double getproductNumber() { // retrieve values
        return productNumber;
    }

    public String getname() {
        return name;
    }

    public String getdepartment() {
        return department;
    }

    public double getunitPrice() {
        return unitPrice;
    }

    public double getunitsInStock() {
        return unitsInStock;
    }

    public void setproductNumber(double productNumber) {
        this.productNumber = productNumber;
    }

    public void setname(String name) {
        this.name = name;
    }

    public void setdepartment(String department) {
        this.department = department;
    }

    public void setunitPrice(double unitPrice) {
        this.unitPrice = unitPrice;
    }

    public void setunitsInStock(double unitsInStock) {
        this.unitsInStock = unitsInStock;
    }

    public double gettotalInv() {
        return getunitPrice() * getunitsInStock();
    }

    @Override
    public String toString() {
        return "MobilePhone [productNumber=" + productNumber + ", name=" + name
                + ", department=" + department + ", unitsInStock="
                + unitsInStock + ", unitPrice=" + unitPrice + "]";
    }
}