0

Java の次のコードに問題があります。

2 つのコンストラクターが必要で、1 つはデフォルトで黄色に設定する必要があり、もう 1 つはユーザーが選択できるようにする必要があります。私は何を間違っていますか?

第二に、メソッドberaknaomkretsの10進数へのフォーマットが機能していないようです。何が間違っていますか。

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」に設定したい場合は、2つのオプションがあります。インスタンス変数を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 に答える