0

java中的以下代码有问题。

我必须有两个构造函数,其中一个我必须默认为黄色,另一个你应该能够选择。我究竟做错了什么?

其次,方法 beraknaomkrets 中小数点后的格式似乎不起作用,我做错了什么。

import java.text.*;
import java.io.*;
import java.util.*;

public class Cirkel
{
    //instansvariabler
    private int radie;
    private String farg;

    //konstruktorn
    public Cirkel()
    {
        radie = 0;
        farg = "";
    }

    public Cirkel(String farg)
    {
        radie = 0;
        farg = "gul";
    }

    //metod där man får ange färg
    public void andraFarg()throws IOException
    {
        BufferedReader myIn = new BufferedReader
            (new InputStreamReader (System.in));

        System.out.print("Ange vilken färg cirkeln ska ha: ");
        farg = myIn.readLine();
    }

    //metod som returnerar den aktuella färgen på cirkeln
    public String hamtaFarg()
    {
        return farg;
    }

    //metod där man får ange radien på cirkeln
    public void andraRadie()throws IOException
    {
        BufferedReader stdin = new BufferedReader
            (new InputStreamReader (System.in));

        System.out.print("Välj vilken radie cirkeln ska ha: ");
        radie = Integer.parseInt(stdin.readLine());
    }

    //metod som returnerar radien
    public int hamtaRadie()
    {
        return radie;
    }

    public double beraknaOmkrets()
    {
        NumberFormat formatter = new DecimalFormat("#0.0");

        double omkrets = 0;
        omkrets = radie*2*3.14;
        formatter.format(omkrets);
        return omkrets;
    }

    public double beraknaArea()
    {
        NumberFormat formatter = new DecimalFormat("#0.0");
        double area = 0;
        area = radie*radie*3.14;
        formatter.format(area);

        return area;
    }
}

class TestCirkel
{
    public static void main(String args[])throws IOException
    {
        BufferedReader myIn = new BufferedReader
        (new InputStreamReader (System.in));

        Cirkel c1 = new Cirkel(); //skapa objektet c1
        Cirkel c2 = new Cirkel("gul");

        c1.andraFarg();
        c1.andraRadie();
        System.out.println(" Färgen på cirkel 1 är "+ c1.hamtaFarg());
        System.out.println(" Omkretsen på cirkel 1 är "+ c1.beraknaOmkrets());
        System.out.println("Arean på cirkel 1 är "+c1.beraknaArea());

        c2.andraRadie();
        System.out.println(" Färgen på cirkel 2 är "+c2.hamtaFarg());
        System.out.println(" Omkretsen på cirkel 2 är "+c2.beraknaOmkrets());
        System.out.println("Arean på cirkel 2 är "+c2.beraknaArea());
    }
}
4

3 回答 3

3

这会将变量 farg 的值从参数分配给实例变量 farg。

public Cirkel(String farg)
{
    radie = 0;
    this.farg = farg;
}

现在,如果您希望无论如何都将 farg 的值设置为“gul”,那么您有两个选择。将实例变量初始化为 gul

private String farg = "gul";

或对您的默认构造函数进行修改。任何一个都适合你。

public Cirkel()
{
    radie = 0;
    this.farg = "gul";
}
于 2012-08-01T18:24:45.307 回答
0

在您的非默认构造函数中,您只是将 farg 值设置为“gul”,而不是使用传入的值。该构造函数应该使用

this.farg = farg

还可以尝试使用 DecimalFormat 作为您的格式化方法,如此处所示

于 2012-08-01T18:26:22.400 回答
0

您在构造函数中接收值,但没有将其设置为类变量。在默认构造函数中,该值设置为空字符串,应设置为您感兴趣的颜色(“gul”)。

于 2012-08-01T18:27:39.607 回答