繁体   English   中英

需要主要方法协助

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM