[英]main method assistance required
我已经编写了以下代码,我设法测试了Get语句,但是如何在下面的代码中测试void语句,如您所见,我已经使用flygplan2.andraHojd更改了int,但是如何显示结果的变化,我可以在skrivaUTinfo类中显示它)
请参见下面的代码
//Klass
public class FlygPlan {
int hojd;
int flygriktning;
int hastighet;
String modellbeteckning;
//Konstruktor
public FlygPlan(int hojd, int flygriktning, int hastighet, String modellbeteckning) {
this.hojd = hojd;
this.flygriktning = flygriktning;
this.hastighet = hastighet;
this.modellbeteckning = modellbeteckning;
}
//Main-metoden
public static void main(String[] args) {
FlygPlan flygplan1 = new FlygPlan (1000, 1, 60 , "Hejsan");
FlygPlan flygplan2 = new FlygPlan (10, 4, 70, "Sohail");
flygplan1.skrivaUt();
flygplan2.andraHojd(60,70);
}
public void andraHojd(int hojd, int nyHojd)
{
hojd = nyHojd;
}
public static int visaHojd(int hojd)
{
return hojd;
}
public void andraRiktning(int flygriktning, int nyFlygriktning)
{
flygriktning = nyFlygriktning;
}
public static int visaRiktning(int flygriktning)
{
return flygriktning;
}
public void andraHastighet(int hastighet, int nyHastighet)
{
hastighet = nyHastighet;
}
public static int visaHastighet(int hastighet)
{
return hastighet;
}
public void andraModellBeteckning(int modellbeteckning, int nyModellbeteckning)
{
modellbeteckning = nyModellbeteckning;
}
public static String visaModellBeteckning(String modellbeteckning)
{
return modellbeteckning;
}
public void skrivaUt()
{
System.out.println(" flygets modellbeteckning är " +modellbeteckning);
System.out.println(" flygets flygriktning är " +flygriktning);
System.out.println(" flygets hastighet är " +hastighet);
System.out.println(" flyget flyger på höjd(m) " +hojd);
}
}
最初,我认为该代码有几处错误。
你为什么要使吸气剂static
? 这意味着它们不与任何特定的对象实例相关联,因此实际上将无法工作。
但是,您不会注意到这一点,因为您将一个值传递到了“ getter”中,该方法直接返回out 。 这是故意的吗(大概不是,因为该方法什么都不做)? 获取器通常不带任何参数,并返回一个实例字段,例如:
public int visaHojd()
{
return hojd;
}
类似地,您正在将两个参数传递给setter,这也不常见-尤其是您的方法再次不执行任何操作(它设置了局部变量 ,然后退出,不进行“外部可见”更改)。 第一hojd
您在阴影传递参数hojd
场和隐藏它,所以现场永远不会被更新。 您可以将setter编写为:
public void andraHojd(int nyHojd)
{
hojd = nyHojd;
}
要回答有关测试的实际问题,您需要考虑实际声明的方法是做什么的。 在类的上下文中,二传手的声明作用是什么? 对于这个简单的类,这意味着对getter的下一次调用将返回该值。 因此,您不能孤立地测试该方法。 您需要一起调用方法以测试它们是否满足此要求。
大概是这样的:
public void testSetter() {
int testValue = 42; // arbitrary
FlygPlan testObj = new FlygPlan();
// do the test
testObj.andraHojd(testValue);
int result = testObj.visaHojd();
// assert correctness, i.e. that the same value was returned from the
// getter as was passed to the setter (would usually use something like
// JUnit here)
assert testValue == result;
}
void
表示方法不返回任何内容。
一种测试方法是放入System.out.println()
并检查它是否被调用。 您可以在调用setter之后使用getter打印该值。
我确实在您的代码中看到了一些问题:
A. static
getter方法返回实例成员;
B.吸气剂通常不带任何参数。 我不认为您想这样做。
public static int visaHastighet(int hastighet)
{
return hastighet;
}
应该是这样的:
public int visaHastighet()
{
return hastighet;
}
C.您的setter放置不正确,因为它仅修改局部变量。
public void andraHojd(int hojd, int nyHojd)
{
hojd = nyHojd;
}
应该是这样的:
public void andraHojd(int hojd)
{
hojd = nyHojd;
}
public void andraHojd(int hojd, int nyHojd)
{
hojd = nyHojd;
}
此setter方法以及类似的方法可能不是您想要的。 您将传入一个整数变量作为参数(hojd)
并根据另一个方法参数(nyHojd)
设置其值。 当该方法存在时,此状态更改将丢失。 我认为您想要的是:
public void andraHojd(int hojd)
{
this.hojd = hojd;
}
至于你的问题:
我如何在下面的代码中测试void语句,如您所见,我已经使用flygplan2.andraHojd更改了int,但是如何显示更改的结果,也可以在skrivaUTinfo类中显示它)
您可以在类上编写toString()
方法以打印出其成员字段,然后只需在FlygPlan
实例上FlygPlan
@Override public String toString(){返回“ hojd =” + this.hojd“ +” flygriktning =“ this.flygriktning;}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.