- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
大家好,我想知道你们能否为我遇到的一些 Java 问题提供一些帮助。我正在开展一个项目,该项目涉及跟踪机场不同方面的多个类(class),我遇到的问题都围绕飞行员类(class)。根据我的测试,我的问题如下:
我尝试根据教科书的解释来解决所有这些问题,但运气不太好。不幸的是,该项目的测试也不包含任何有用的信息。感谢您提供的任何意见和建议。
/**
* Pilot.java
**/
//Imports below
/**
* Class to store information about airplane pilots.
*
* @author Nicholas Thomas
* @version 04/4/2018
*/
public class Pilot
{
//Instance variables below
private String name;
private String license;
/** No-arg constructor for pilot class.
* No parameter constructor for objects of class Pilot.
*/
public Pilot()
{
name = "";
license = "";
}
/** Constructor for pilot class using name and license.
* Pilot Constructor
*
* @param name A parameter
* @param license A parameter
*/
public Pilot(String name, String license)
{
this.name = name;
this.license = license;
}
/** Mutator to modify the name field.
* Method setName
*
* @param name A parameter
*/
public void setName(String name)
{
this.name = name;
name = "";
}
/** Mutator to modify the license field.
* Method setLicense
*
* @param license A parameter
*/
public void setLicense(String license)
{
this.license = license;
license = "";
}
/** Accessor for the name instance.
* Method getName
*
* @return The return value
*/
public String getName()
{
return name;
}
/** Accessor for the license instance.
* Method getLicense
*
* @return The return value
*/
public String getLicense()
{
return license;
}
/** Method to copy.
* Method copy
*
* @return The return value
*/
public Pilot copy()
{
Pilot p1 = new Pilot(name, license);
Pilot p2;
p2 = p1.copy();
return p2;
}
/** Method to convert to string.
* Method toString
*
* @return The return value
*/
public String toString()
{
String p1 = "Name: " + name + " - "
+ "License: " + license;
return p1;
}
/** Method to determine if something equals something.
* Method equals
*
* @param pilot A parameter
* @return The return value
*/
public boolean equals(Pilot pilot)
{
return true;
}
}
我不确定它是否有帮助,但这是我正在运行的测试的代码。
/**
* TestPrelab2.java
*/
import static org.junit.Assert.fail;
import org.junit.Test;
import org.junit.Rule;
import org.junit.rules.Timeout;
/**
* Describe TestPrelab2 here.
*
* @author Joel Swanson
* @version 03.07.2014
*/
public class TestPrelab2
{
@Rule
public Timeout timeout = new Timeout(30000);
/**
* Check mutators to make sure setName and setLicense work
* properly.
*/
@Test
public void checkAccessorsMutators001()
{
checkNameAMNormal("Tom");
checkNameAMNull();
checkLicenseAMNormal("1010A");
checkLicenseAMNull();
}
/**
* Check the constructors.
*/
@Test
public void checkConstructors002()
{
checkNoArgConstructor();
checkArgConstructor("Tom", "12345-2");
checkArgConstructor("Bill", "12A345");
}
/**
* Test the copy method.
*/
@Test
public void checkCopy003()
{
checkCopy("Tom", "12345-2");
checkCopy("Bill", "12A345");
}
/**
* Test the copy method with data.
* @param testName The data to put in for name.
* @param testLicense The data to put in for ssn.
*/
public void checkCopy(String testName, String testLicense)
{
String fb = "";
Pilot pilot1 = new Pilot(testName, testLicense);
Pilot pilot2 = pilot1.copy();
if (pilot2 == null)
{
fb += "Fail in TestPrelab2.\n";
fb += "The copy method returned a null value.\n";
fail(fb);
}
else if (pilot1 == pilot2)
{
fb += "Fail in TestPrelab2.\n";
fb += "The copy method returned the actual pilot object\n"
+ "instead of making and returning a copy of the object.\n";
fail(fb);
}
else if (!pilot1.getName().equals(pilot2.getName()))
{
fb += "Fail in TestPrelab2.\n";
fb += "The copy method returned a pilot object with a name\n";
fb += "that is different than the original pilot object.\n";
fail(fb);
}
else if (!pilot1.getLicense().equals(pilot2.getLicense()))
{
fb += "Fail in TestPrelab2.\n";
fb += "The copy method returned a pilot object with a license\n";
fb += "that is different than the original pilot object.\n";
fail(fb);
}
}
/**
* Check the toString method.
*/
@Test
public void checkToString004()
{
String fb = "";
Pilot pilot = new Pilot("Alice", "112233");
String data = pilot.toString();
if (data == null)
{
fb += "Fail in TestPrelab2.\n";
fb += "The toString method returned a null value.\n";
fail(fb);
}
else if (data.contains("\n") || data.contains("\t"))
{
fb += "Fail in TestPrelab2.\n";
fb += "The toString method returned incorrect data.\n";
fb += "The value from toString should not contain tab"
+ " or newline characters.\n";
fail(fb);
}
else if (!data.equals("Name: Alice - License: 112233"))
{
fb += "Fail in TestPrelab2.\n";
fb += "The toString method returned incorrect data.\n";
fb += "Expected: Name: Alice - License: 112233\n";
fb += "Your value: " + data + "\n";
fb += "Careful with spacing.\n";
fail(fb);
}
pilot = new Pilot("Tommy", "555555");
data = pilot.toString();
if (data == null)
{
fb += "Fail in TestPrelab2.\n";
fb += "The toString method returned a null value.\n";
fail(fb);
}
else if (data.contains("\\n") || data.contains("\\t"))
{
fb += "Fail in TestPrelab2.\n";
fb += "The toString method returned incorrect data.\n";
fb += "The value from toString should not contain tab"
+ " or newline characters";
fail(fb);
}
else if (!data.equals("Name: Tommy - License: 555555"))
{
fb += "Fail in TestPrelab2.\n";
fb += "The toString method returned incorrect data.\n";
fb += "Expected: Name: Tommy - License: 555555\n";
fb += "Your value: " + data + "\n";
fb += "Careful with spacing.\n";
fail(fb);
}
}
/**
* Check the equals method.
*/
@Test
public void checkEquals005()
{
String fb = "";
String aliceB = "AliceB";
String licenseB = "112233B";
Pilot pilot1 = new Pilot("Alice", "112233");
Pilot pilot2 = new Pilot(aliceB.substring(0, 5),
licenseB.substring(0, 6));
if (!pilot1.equals(pilot2))
{
fb += "Fail in TestPrelab2.\n";
fb += "The equals method returned false when name and\n";
fb += "license are the same in two different objects.\n";
fb += "Make sure you are not using == to compare strings.\n";
fail(fb);
}
pilot1 = new Pilot("Alice", "112233");
pilot2 = new Pilot("Bill", licenseB.substring(0, 6));
if (pilot1.equals(pilot2))
{
fb += "Fail in TestPrelab2.\n";
fb += "The equals method returned true when name is different\n";
fb += "but license is the same in two different objects.\n";
fail(fb);
}
pilot1 = new Pilot("Alice", "112233");
pilot2 = new Pilot(aliceB.substring(0, 5), "223344");
if (pilot1.equals(pilot2))
{
fb += "Fail in TestPrelab2.\n";
fb += "The equals method returned true when name is the same\n";
fb += "but license is different in two different objects.\n";
fail(fb);
}
pilot1 = new Pilot("Alice", "112233");
pilot2 = new Pilot("Bill", "223344");
if (pilot1.equals(pilot2))
{
fb += "Fail in TestPrelab2.\n";
fb += "The equals method returned true when name is different\n";
fb += "and license is different in two different objects.\n";
fail(fb);
}
}
/**
* Check the name accessor and mutator with normal valid data.
* @param testData The name to set for testing.
*/
public void checkNameAMNormal(String testData)
{
String fb = "";
Pilot pilot = new Pilot();
pilot.setName(testData);
String setData = pilot.getName();
if (setData == null)
{
fb += "Fail in TestPrelab2.\n";
fb += "Name field is null after running setName\n";
fb += "and getName with valid data.\n";
fb += "Name accessor or mutator is incorrect.\n";
fail(fb);
}
else if (!setData.equals(testData))
{
fb += "Fail in TestPrelab2.\n";
fb += "Name field is incorrect after running\n";
fb += "setName and getName with valid data.\n";
fb += "Name accessor or mutator is incorrect.\n";
fail(fb);
}
}
/**
* Check the license accessor and mutator for proper operation.
* @param testData The license to set for testing.
*/
public void checkLicenseAMNormal(String testData)
{
String fb = "";
Pilot pilot = new Pilot();
pilot.setLicense(testData);
String setData = pilot.getLicense();
if (setData == null)
{
fb += "Fail in TestPrelab2.\n";
fb += "License field is null after running setLicense\n";
fb += "and getLicense with valid data.\n";
fb += "License accessor or mutator is incorrect.\n";
fail(fb);
}
else if (!setData.equals(testData))
{
fb += "Fail in TestPrelab2.\n";
fb += "License field is incorrect after running\n";
fb += "setLicense and getLicense with valid data.\n";
fb += "License accessor or mutator is incorrect.\n";
fail(fb);
}
}
/**
* Make sure the mutator does not allow null data.
*/
public void checkNameAMNull()
{
String fb = "";
Pilot pilot = new Pilot();
pilot.setName("ABCD");
pilot.setName(null);
String setData = pilot.getName();
if (setData == null)
{
fb += "Fail in TestPrelab2.\n";
fb += "Name field is null after running setName"
+ " and getName with null data.\n";
fb += "Make sure mutator sets name to empty"
+ " string on null data.\n";
fb += "Make sure accessor isn't incorrectly"
+ " returning null values.\n";
fail(fb);
}
else if (!setData.equals(""))
{
fb += "Fail in TestPrelab2.\n";
fb += "Name field is not empty string after running"
+ " setName and getName with null data.\n";
fb += "Make sure the mutator sets name to empty"
+ " string on null data.\n";
fb += "Make sure the accessor isn't incorrectly"
+ " returning the wrong value.\n";
fail(fb);
}
}
/**
* Make sure the mutator does not allow null data.
*/
public void checkLicenseAMNull()
{
String fb = "";
Pilot pilot = new Pilot();
pilot.setLicense("ABCD");
pilot.setLicense(null);
String setData = pilot.getLicense();
if (setData == null)
{
fb += "Fail in TestPrelab2.\n";
fb += "License field is null after running setlicense"
+ " and getLicense with null data.\n";
fb += "Make sure mutator sets license to empty"
+ " string on null data.\n";
fb += "Make sure accessor isn't incorrectly"
+ " returning null values.\n";
fail(fb);
}
else if (!setData.equals(""))
{
fb += "Fail in TestPrelab2.\n";
fb += "License field is not empty string after running"
+ " setLicense and getLicense with null data.\n";
fb += "Make sure the mutator sets license to empty"
+ " string on null data.\n";
fb += "Make sure the accessor isn't incorrectly"
+ " returning the wrong value.\n";
fail(fb);
}
}
/**
* Test argument constructor.
*
* @param name The name to test with this Pilot.
* @param license The license to test with this Pilot.
*/
public void checkArgConstructor(String name, String license)
{
String fb = "";
Pilot pilot = new Pilot(name, license);
if (!pilot.getName().equals(name))
{
fb += "Fail in TestPrelab2.\n";
fb += "Pilot argument constructor improperly set name.\n";
fail(fb);
}
if (!pilot.getLicense().equals(license))
{
fb += "Fail in TestPrelab2.\n";
fb += "Pilot argument constructor improperly set name.\n";
fail(fb);
}
}
/**
* Test the no-arg constructor. Should set the fields
* to empty strings.
*/
public void checkNoArgConstructor()
{
String fb = "";
Pilot pilot = new Pilot();
if (pilot.getName() == null)
{
fb += "Fail in TestPrelab2.\n";
fb += "Pilot no-arg constructor did not set name"
+ " field to empty string.\n";
fail(fb);
}
if (pilot.getLicense() == null)
{
fb += "Fail in TestPrelab2.\n";
fb += "Pilot no-arg constructor did not set license "
+ "field to empty string.\n";
fail(fb);
}
}
}
最佳答案
1) TestPrelab2 失败。使用空数据运行 setName 和 getName 后,名称字段为空。确保 mutator 将名称设置为空数据上的空字符串。确保访问器没有错误地返回空值:将通过以下更改进行修复 -
public Pilot(String name, String license){
setName(name);
setLicense(license);
}
public void setLicense(String license) {
this.license = (license == null) ? "" : license;
}
public void setName(String name) {
this.name = (name == null) ? "" : name;
}
2) TestPrelab2 失败。当两个不同对象中名称不同但许可证相同时,equals 方法返回 true:重构始终 true 方法 -
public boolean equals(Pilot pilot)
{
//return true;
return this.name.equals(pilot.getName()) && this.license.equals(pilot.getLicense());
}
3)我的复制方法也失败了,但我没有得到任何关于原因的解释。重构 -
public Pilot copy()
{
return new Pilot(name, license);
}
关于java - Java中的copy方法、equals方法和空数据的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49743534/
我正在编写一个具有以下签名的 Java 方法。 void Logger(Method method, Object[] args); 如果一个方法(例如 ABC() )调用此方法 Logger,它应该
我是 Java 新手。 我的问题是我的 Java 程序找不到我试图用作的图像文件一个 JButton。 (目前这段代码什么也没做,因为我只是得到了想要的外观第一的)。这是我的主课 代码: packag
好的,今天我在接受采访,我已经编写 Java 代码多年了。采访中说“Java 垃圾收集是一个棘手的问题,我有几个 friend 一直在努力弄清楚。你在这方面做得怎么样?”。她是想骗我吗?还是我的一生都
我的 friend 给了我一个谜语让我解开。它是这样的: There are 100 people. Each one of them, in his turn, does the following
如果我将使用 Java 5 代码的应用程序编译成字节码,生成的 .class 文件是否能够在 Java 1.4 下运行? 如果后者可以工作并且我正在尝试在我的 Java 1.4 应用程序中使用 Jav
有关于why Java doesn't support unsigned types的问题以及一些关于处理无符号类型的问题。我做了一些搜索,似乎 Scala 也不支持无符号数据类型。限制是Java和S
我只是想知道在一个 java 版本中生成的字节码是否可以在其他 java 版本上运行 最佳答案 通常,字节码无需修改即可在 较新 版本的 Java 上运行。它不会在旧版本上运行,除非您使用特殊参数 (
我有一个关于在命令提示符下执行 java 程序的基本问题。 在某些机器上我们需要指定 -cp 。 (类路径)同时执行java程序 (test为java文件名与.class文件存在于同一目录下) jav
我已经阅读 StackOverflow 有一段时间了,现在我才鼓起勇气提出问题。我今年 20 岁,目前在我的家乡(罗马尼亚克卢日-纳波卡)就读 IT 大学。足以介绍:D。 基本上,我有一家提供簿记应用
我有 public JSONObject parseXML(String xml) { JSONObject jsonObject = XML.toJSONObject(xml); r
我已经在 Java 中实现了带有动态类型的简单解释语言。不幸的是我遇到了以下问题。测试时如下代码: def main() { def ks = Map[[1, 2]].keySet()
一直提示输入 1 到 10 的数字 - 结果应将 st、rd、th 和 nd 添加到数字中。编写一个程序,提示用户输入 1 到 10 之间的任意整数,然后以序数形式显示该整数并附加后缀。 public
我有这个 DownloadFile.java 并按预期下载该文件: import java.io.*; import java.net.URL; public class DownloadFile {
我想在 GUI 上添加延迟。我放置了 2 个 for 循环,然后重新绘制了一个标签,但这 2 个 for 循环一个接一个地执行,并且标签被重新绘制到最后一个。 我能做什么? for(int i=0;
我正在对对象 Student 的列表项进行一些测试,但是我更喜欢在 java 类对象中创建硬编码列表,然后从那里提取数据,而不是连接到数据库并在结果集中选择记录。然而,自从我这样做以来已经很长时间了,
我知道对象创建分为三个部分: 声明 实例化 初始化 classA{} classB extends classA{} classA obj = new classB(1,1); 实例化 它必须使用
我有兴趣使用 GPRS 构建车辆跟踪系统。但是,我有一些问题要问以前做过此操作的人: GPRS 是最好的技术吗?人们意识到任何问题吗? 我计划使用 Java/Java EE - 有更好的技术吗? 如果
我可以通过递归方法反转数组,例如:数组={1,2,3,4,5} 数组结果={5,4,3,2,1}但我的结果是相同的数组,我不知道为什么,请帮助我。 public class Recursion { p
有这样的标准方式吗? 包括 Java源代码-测试代码- Ant 或 Maven联合单元持续集成(可能是巡航控制)ClearCase 版本控制工具部署到应用服务器 最后我希望有一个自动构建和集成环境。
我什至不知道这是否可能,我非常怀疑它是否可能,但如果可以,您能告诉我怎么做吗?我只是想知道如何从打印机打印一些文本。 有什么想法吗? 最佳答案 这里有更简单的事情。 import javax.swin
我是一名优秀的程序员,十分优秀!