本文介绍了BookOrder类不在Test中呈现结果的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

还有另一个项目问题...我有一个BookOrder类如下...

Yet another project question... I have a BookOrder Class as follows...

import java.text.DecimalFormat;

public class BookOrder
{
    private String author;      
    private String title;
    private int quantity;
    private double costPerBook;
    private String orderDate;
    private double weight;
    private char type;      //R,O,F,U,N

    public BookOrder (String author, String title)
    {
    }

    public BookOrder(String author, String title, int quanitity, double costPerBook, String orderDate, double weight, char type)
    {
    }

    public BookOrder(BookOrder bookOrder)
    {
    }

    public void setAuthor(String author)
    {
        this.author= author;
    }

    public void setTitle(String title)
    {
        this.title= title;
    }

    public void setQuantity(int quantity)
    {
        if (quantity >=0)
            this.quantity= quantity;
    }

    public void setCostPerBook(double costPerBook)
    {
        if (costPerBook >= 0)
            this.costPerBook= costPerBook;
    }

    public void setOrderDate(String orderDate)
    {
        this.orderDate= orderDate;
    }

    public void setWeight(double weight)
    {
        if (weight >=0)
            this.weight=weight;
    }

    public void setType(char type)
    {
        if (type=='r' || type=='R' || type=='o' || type=='O' || type=='f' || type=='F' || type=='u'|| type=='U'|| type=='n'|| type=='N')
        {   
            if(type < 97)       // all values below 97 are caps
                this.type = type;
            else    
                this.type = ((String.valueOf(type)).toUpperCase()).charAt(0);       // had to research, but converted char to a string, capitalized it, then converted back to char.
        }
        else
            this.type= 'N';
    }

    public void assignValues(int quantity, double costPerBook, double weight, char type)
    {
    }


    public String getAuthor()
    {
        String strAuthor;
        strAuthor=this.author;
        return strAuthor;
    }   //end Public String getAuthor

    public String getTitle()
    {
        String strTitle;
        strTitle=this.title;
        return strTitle;
    }

    public int getQuantity()
    {
        int iQuant;
        iQuant=this.quantity;
        return iQuant;
    }

    public double getCostPerBook()
    {
        double dCostPerBook;
        dCostPerBook=this.costPerBook;
        return dCostPerBook;
    }

    public String getOrderDate()
    {
        String strOrderDate;
        strOrderDate=this.orderDate;
        return strOrderDate;
    }

    public double getWeight()
    {
        double dWeight;
        dWeight=this.weight;
        return dWeight;
    }

    public char getType()
    {
        char cType;
        cType=this.type;
        return cType;
    }

    public void adjustQuantity(int adjustingQuantity)
    { 
        int iNewQuantity = (this.quantity + adjustingQuantity);
        if (iNewQuantity >= 0)
            this.quantity = iNewQuantity;
        else
            this.quantity = 0;
    }

    public double totalWeight()
    {
        double dTotalWeight;
        dTotalWeight= (this.quantity * this.weight);
        return dTotalWeight;
    }

    public double calcCost()
    {
    double dCalculatedCost;
    dCalculatedCost= (this.quantity * this.costPerBook);
    return dCalculatedCost;
    }

    public double shipping()
    {
        double dShipping;
        double dShippingCost;

        if(this.type=='R')
        {
            dShippingCost= 0.30;
            dShipping=(dShippingCost * (this.quantity * this.weight));
        }
        else if (this.type=='O')
        {
            dShippingCost= 0.50;
            dShipping=(dShippingCost *(this.quantity * this.weight));
        }
        else if (this.type=='P')
        {
            dShippingCost= 0.10;
            dShipping=(dShippingCost * (this.quantity * this.weight));
        }
        else if (this.type=='F')
        {
            dShippingCost=0.25;
            dShipping=(dShippingCost * (this.quantity * this.weight));
        }
        else if (this.type=='U')
        {
            dShippingCost=0.30;
            dShipping=(dShippingCost * (this.quantity * this.weight));
        }
        else
        {
            dShippingCost= .05;
            dShipping=(dShippingCost * (this.quantity * this.weight));
        }
        return dShipping;
    }

    public double totalCost()       //calcCost+shipping
    {
        double dTotalCost;
        dTotalCost= (calcCost() + shipping());
        return dTotalCost;
    }

    public String invoice()
    {
        DecimalFormat df= new DecimalFormat ("$#,#00.00");
        String strInvoice;

        strInvoice="\n Author: " + this.author;
        strInvoice +="\n Title: " + this.title;
        strInvoice +="\n Quantity: " + this.quantity;
        strInvoice +="\n Cost Per Book: " + df.format(this.costPerBook);
        strInvoice +="\n Order Date: " + this.orderDate;
        strInvoice +="\n Total Weight: " + totalWeight();
        strInvoice +="\n Shipping Type: " + this.type;
        strInvoice +="\n Shipping Cost: " + df.format(shipping());
        strInvoice +="\n Total Cost: " + df.format(totalCost());

        return strInvoice;
    }
}

编译没有问题。然后我运行我的主要方法...并放入

It compiled no problem. Then I was running my main method... and put in

BookOrder BookOrder1 = new BookOrder("Jonathan", "Book1", 12, 6.75, "11/5/2013", 8.75, 'r');
System.out.print(""+ BookOrder1.invoice());

然而,每当它打印我的resutls,一切的结果为null或零。任何人都有想法为什么这是?我认为这很简单,但我不知道什么...
}

Yet whenever it printed my resutls, the results for everything was null or zero. Anyone have idea why this is? I think it's something simple but I'm not sure what...}

推荐答案

因为你不是初始化你的构造函数中的任何东西,所以它接受默认值的所有变量在你的类。所以你可以改变你的构造函数像:

Because you are not initializing any thing in your constructor so it takes default value for all variable in you class. So you can change your constructor like :

private String author;      
private String title;
private int quantity;
private double costPerBook;
private String orderDate;
private double weight;
private char type;      //R,O,F,U,N

public BookOrder(String author, String title, int quanitity, double costPerBook, String orderDate, double weight, char type)
{
  this.author = author; 
  this.title =title;
  this.quanitity =quanitity;

  // others also
}

这篇关于BookOrder类不在Test中呈现结果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-16 12:28