需要主要方法援助

时间:2012-08-07 16:36:04

标签: java

我编写了以下代码,我已经设法测试了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);



    }




}

3 个答案:

答案 0 :(得分:0)

我最初看到这个代码有几个问题。

为什么要让你的吸气者static?这意味着它们不与任何特定的对象实例相关联,因此实际上无法工作。

但是,你没有注意到这一点,因为你将值传递给你的“getter”,方法直接返回。这是有意的(可能不是,因为该方法什么都不做)? Getters通常不带参数,并返回一个实例字段,例如:

public int visaHojd()
{
    return hojd;
}

在类似的意义上,你将两个参数传递给你的setter,这也很不寻常 - 特别是你的方法再一次没做什么(它设置一个局部变量然后退出,没有“外部可见的”变化)。您在阴影 hojd字段中传递的第一个hojd参数并将其隐藏,因此该字段永远不会更新。您可以将setter简单地写为:

public void andraHojd(int nyHojd)
{
    hojd = nyHojd;
}

要回答关于测试的实际问题,您需要考虑实际声明的方法。在类的上下文中,setter声明的效果是什么?对于这个简单的类,这意味着下一次调用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;
}

答案 1 :(得分:0)

void表示方法不返回任何内容。

测试的一种方法是放置System.out.println()并检查它是否被调用。 并且可以在调用setter后使用getter打印值。

我确实在您的代码中看到了一些问题:

一个。 static getter方法返回实例成员;

B中。 getter通常不带任何参数。 我不这么认为你想这样做。

public static int visaHastighet(int hastighet)
{
    return hastighet;
}

应该是这样的:

public int visaHastighet()
{
    return hastighet;
}

℃。你的setter没有正确放置,因为它只修改了局部变量。

public void andraHojd(int hojd, int nyHojd)
{
    hojd = nyHojd;
} 

应该是这样的:

public void andraHojd(int hojd)
{
    hojd = nyHojd;
} 

答案 2 :(得分:0)

public void andraHojd(int hojd, int nyHojd)
{
    hojd = nyHojd;
}

这种setter方法和类似的方法可能不是你想要的。您将整数变量作为参数(hojd)传入,并根据另一个方法参数(nyHojd)设置它的值。当该方法存在时,此状态更改将丢失。我想你想要的是:

public void andraHojd(int hojd)
{
    this.hojd = hojd;
}

就你的问题而言:

  

如何在I代码中测试下面代码中的void语句   使用了flygplan2.andraHojd来改变int,但我该如何显示   该变化的结果,我可以在skrivaUTinfo类中显示它)

您可以在课程上编写toString()方法打印出其成员字段,然后在FlygPlan

的实例上调用该方法

@覆盖 public String toString(){     返回“hojd =”+ this.hojd“+”flygriktning =“this.flygriktning; }