- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
好吧,我终于完成了我的作业,并通过使用右键单击“新帐户”等创建对象来测试它,这一切都工作正常,从我可以看到父类(super class)和子类都正确链接,但是我的工作是使用名为 HW2 的测试类进行测试的,当我运行它时,它应该创建一些帐户并将其详细信息打印到终端。然而,与应有的样子相比,输出缺少大量内容,基本上我想知道为什么测试脚本没有正确创建对象。我发布了很多代码,但我相信问题仅在于构造函数。
RUNHW2
/**
* Class to test CG0048 Homework 2
*
* @author (your name)
* @version (a version number or a date)
*/
public class RunHW2
{
private String name, id;
private AccountList accounts;
private PersonalAccount pa1, pa2;
private TradeAccount ta1, ta2;
/**
* Constructor for objects of class HW2Test
*
* @param name the student's name
* @param id the student's id
*/
public RunHW2(String name, String id)
{
this.name = name;
this.id = id;
accounts = new AccountList();
runTests();
}
/**
* Run the various tests
*/
public void runTests()
{
// print header
System.out.println("Name: " + name + "\tID: " + id + "\n");
testAddPersonalAccountNoPoints();
testAddPersonalAccountWithPoints();
testAddTradeAccountNoPoints();
testAddTradeAccountWithPoints();
System.out.println("Student should now print out the contents of the terminal window.");
}
/**
* Create 2 Personal Accounts
*/
public void testAddPersonalAccountNoPoints()
{
try
{
// personal account with no initial points
pa1 = new PersonalAccount ("Ann", "Archer","1000",
"1 Amble Way", "Amble", "AA1 1AA",
"1111111111111111", 'D');
accounts.addAccount(pa1);
System.out.println(pa1);
}
catch (Exception e)
{
System.out.println("An exception was raised in "
+ "testAddPersonalAccountNoPoints.");
}
}
public void testAddPersonalAccountWithPoints()
{
try
{
// personal account with additional points
pa2 = new PersonalAccount ("Barbara", "Bach","1001",
"2 Blyth Boulevard", "Blyth", "BB2 2BB",
"2222222222222222", 'M', 20);
accounts.addAccount(pa2);
System.out.println(pa2);
}
catch (Exception e)
{
System.out.println("An exception was raised in testAddPersonalAccountWithPoints.");
}
}
public void testAddTradeAccountNoPoints()
{
try
{
// trade account with no initial points
ta1 = new TradeAccount ("Colin", "Cowdry","1002",
"3 Consett Crescent", "Consett", "CC3 3CC",
"Cowdry Construction",
"33 Chopwell Close", "Chopwell", "CD3 3CD",
"GB333333");
accounts.addAccount(ta1);
System.out.println(ta1);
}
catch (Exception e)
{
System.out.println("An exception was raised in testAddTradeAccountNoPoints.");
}
}
public void testAddTradeAccountWithPoints()
{
try
{
// trade account with initial points
ta2 = new TradeAccount ("Dave", "Dee","1004",
"4 Durham Dwellings", "Durham", "DD4 4DD",
"Dee Design",
"44 Darlington Drive", "Darlington", "DE4 4DE",
"GB444444", 40);
accounts.addAccount(ta2);
System.out.println(ta2);
}
catch (Exception e)
{
System.out.println("An exception was raised in testAddTradeAccounts.");
}
}
} // end class
帐户
public class Account
{
private String accountNumber;
private Address address;
private Name name;
private int pointsHeld;
/**
* Constructor for objects of class Account.
* The number of pointsHeld should be set to zero.
*
* @param firstName The Account Holder's first name
* @param lastName The Account Holder's last name
* @param accNumber The Account Holder's account number
* @param street the account holder's street
* @param town the account holder's town
* @param postcode the account holder's postcode
*/
public Account (String fName, String lName, String accNumber,
String street, String town, String postcode)
{
name = new Name(fName, lName);
accountNumber = accNumber;
pointsHeld = 0;
address = new Address(street, town, postcode);
}
/**
* Constructor for objects of class Account.
* The number of pointsHeld should should be set to
* the supplied value.
*
* @param fName The Account Holder's first name
* @param lName The Account Holder's last name
* @param acctNumber The account number
* @param thePoints the pointsHeld awarded when account is initialised
* @param street the account holder's street
* @param town the account holder's town
* @param postcode the account holder's postcode
*/
public Account(String fName, String lName, String acctNumber, int points,
String street, String town, String postcode)
{
name = new Name(fName, lName);
accountNumber = acctNumber;
pointsHeld = points;
address = new Address(street, town, postcode);
}
// accessors
/**
* Increase the number of points held by a given number
* and output a message to the console window giving
* the revised number of points held.
*
* @param number of points to add to total
*/
public void addPoints(int points)
{
pointsHeld = pointsHeld + points;
System.out.println("Points now held: " + pointsHeld);
}
public boolean equals (Object o)
{
if ( o == null )
return false;
if ( !this.getClass().equals(o.getClass()) )
return false;
else
return true;
}
/**
* Get the Account Holder's account Number
*
* @return the Account Holder's account number
*/
public String getAccountNumber()
{
return accountNumber;
}
/**
* Return the account holder's address
*
* @return the account holder's address
*/
public String getAddress()
{
return address.toString();
}
/**
* Get the Account Holder's first name
*
* @return the Account Holder's first name
*/
public String getFirstName()
{
return name.getFirst();
}
/**
* Get the Account Holder's last name
*
* @return the Account Holder's last name
*/
public String getLastName()
{
return name.getLast();
}
/**
* Get the number of points held
*
* @return the number of points held
*/
public int getNoOfPoints()
{
return pointsHeld;
}
/**
* Print out the Account Holder's details to the console window
*
*/
public void printAccountDetails()
{
System.out.println ("Personal Account:" + accountNumber + " " + name.getFirst() + " " +
name.getLast());
System.out.println (address.toString());
System.out.println ("Points Held:" + pointsHeld);
}
/**
* Remove pointsHeld by a given number and output a
* message to the console window giving the revised number
* of points held as long as the number of points would
* not fall below zero
* - otherwise output message to console window instead.
*
* @param number of pointsHeld to remove total.
*
*/
public void removePoints (int points)
{
if ((pointsHeld - points) >=0)
{
pointsHeld = pointsHeld - points;
System.out.println("Points now held: " + pointsHeld);
}
else
{
System.out.println("Transaction refused: "
+ "Insufficient points available.");
}
}
// mutators
/**
* Change the account holder's address
*
* @param street the street
* @param town the town
* @postcode the postcode
*/
public void setAddress(String street, String town, String postcode)
{
address.setFullAddress(street, town, postcode);
}
/**
* Change the first name
*
* @param fName the new first name
*
*/
public void setFirstName(String fName)
{
name.setFirst(fName);
}
/**
* Change the last name
*
* @param lName the new last name
*
*/
public void setLastName(String lName)
{
name.setLast(lName);
}
public String toString()
{
return name.toString();
}
} // end class
个人帐户
/**
* Write a description of class PersonalAccount here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class PersonalAccount extends Account
{
// instance variables - replace the example below with your own
private String cardNumber;
private char cardType;
/**
* Constructor for objects of class PersonalAccount
*/
public PersonalAccount (String firstName, String lastName, String accountNumber,
String street, String town, String postcode, String cardNumber, char cardType)
{
super(firstName,lastName,accountNumber,street,town,postcode);
this.cardType = cardType;
this.cardNumber = cardNumber;
}
public PersonalAccount(String firstName, String lastName, String accountNumber,
String street, String town, String postcode, String cardNumber, char cardType, int points)
{
super(firstName,lastName,accountNumber,street,town,postcode);
this.cardType = cardType;
this.cardNumber = cardNumber;
super.addPoints(points);
}
public String getCardNumber()
{
String input = cardNumber;
StringBuilder result = new StringBuilder();
for (int i = 0; i < input.length(); i++) {
if (i % 4 == 0 && i != 0) {
result.append(" ");
}
result.append(input.charAt(i));
}
return result.toString();
}
public String getCardType()
{
if (cardType == 'D') {
return "Debit";
}
else if (cardType == 'M') {
return "Mastercard";
}
else
return "Visa";
}
public void print ()
{
super.printAccountDetails();
System.out.println("Card Number:"+getCardNumber() + " Card Type: " + getCardType());
}
public String toString()
{
return super.toString();
}
}
最佳答案
您的 toString 方法不完整。您可以看到测试套件基本上是实例化类并打印它。 Account toString(也许还有 PersonalAccount)需要返回右侧窗口中的内容,其中不仅仅包括名称。
您想要的不是 return name.toString();
,而是更像 return name.toString() + "\n"+ otherField.toString();
关于java - 使用另一个类创建新对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28710870/
我想知道有没有可能做 new PrintWriter(new BufferedWriter(new PrintWriter(s.getOutputStream, true))) 在 Java 中,s
我正在尝试使用 ConcurrentHashMap 初始化 ConcurrentHashMap private final ConcurrentHashMap > myMulitiConcurrent
我只是想知道两个不同的新对象初始化器之间是否有任何区别,还是仅仅是语法糖。 因此: Dim _StreamReader as New Streamreader(mystream) 与以下内容不同: D
在 C++ 中,以下两种动态对象创建之间的确切区别是什么: A* pA = new A; A* pA = new A(); 我做了一些测试,但似乎在这两种情况下,都调用了默认构造函数,并且只调用了它。
我已经阅读了其他帖子,但它们没有解决我的问题。环境为VB 2008(2.0 Framework)下面的代码在 xslt.Load 行导致 XSLT 编译错误下面是错误的输出。我将 XSLT 作为字符串
我想知道为什么alert(new Boolean(false))打印 false 而不是打印对象,因为 new Boolean 应该返回对象。如果我使用 console.log(new Boolean
本文实例讲述了Python装饰器用法。分享给大家供大家参考,具体如下: 写装饰器 装饰器只不过是一种函数,接收被装饰的可调用对象作为它的唯一参数,然后返回一个可调用对象(就像前面的简单例子) 注
我可以编写 YAML header 来使用 knit 为 R Markdown 文件生成多种输出格式吗?我无法重现 the original question with this title 的答案中
我可以编写一个YAML标头以使用knitr为R Markdown文件生成多种输出格式吗?我无法重现the original question with this title答案中描述的功能。 这个降价
我正在使用vars package可视化脉冲响应。示例: library(vars) Canada % names ir % `$`(irf) %>% `[[`(variables[e])) %>%
我有一个容器类,它有一个通用参数,该参数被限制到某个基类。提供给泛型的类型是基类约束的子类。子类使用方法隐藏(新)来更改基类方法的行为(不,我不能将其设为虚拟,因为它不是我的代码)。我的问题是"new
Java 在提示! cannot find symbol symbol : constructor Bar() location: class Bar JPanel panel =
在我的应用程序中,一个新的 Activity 从触摸按钮(而不是点击)开始,而且我没有抬起手指并希望在新的 Activity 中跟踪触摸的 Action 。第二个 Activity 中的触摸监听器不响
已关闭。此问题旨在寻求有关书籍、工具、软件库等的建议。不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,
和我的last question ,我的程序无法检测到一个短语并将其与第一行以外的任何行匹配。但是,我已经解决并回答了。但现在我需要一个新的 def函数,它删除某个(给定 refName )联系人及其
这个问题在这里已经有了答案: Horizontal list items (7 个答案) 关闭 9 年前。
我想创建一个新的 float 类型,大小为 128 位,指数为 4 字节(32 位),小数为 12 字节(96 位),我该怎么做输入 C++,我将能够在其中进行输入、输出、+、-、*、/操作。 [我正
我在放置引用计数指针的实例时遇到问题 类到我的数组类中。使用调试器,似乎永远不会调用构造函数(这会扰乱引用计数并导致行中出现段错误)! 我的 push_back 函数是: void push_back
我在我们的代码库中发现了经典的新建/删除不匹配错误,如下所示: char *foo = new char[10]; // do something delete foo; // instead of
A *a = new A(); 这是创建一个指针还是一个对象? 我是一个 c++ 初学者,所以我想了解这个区别。 最佳答案 两者:您创建了一个新的 A 实例(一个对象),并创建了一个指向它的名为 a
我是一名优秀的程序员,十分优秀!