本文介绍了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中呈现结果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!