0

メソッドを使用して十字形を作成する必要があり、パラメーターは十字の「サイズ」です。数字を入力し、奇数の場合は十字を描くので、5を入力した場合、出力は下に追加したスクリーンショットのようになります

中心線は、先週メソッドを開始したばかりなので、本当に私を悩ませているものですが、これまでのところ、次のことを行っています。

import java.util.Scanner;

public class Cross {

    public static void main(String[] arg) {
        Scanner keyboard = new Scanner(System.in);
        System.out.println("Please type a number: ");
        int num = keyboard.nextInt(); 
        drawCross(num);
    }

    public static void drawCross(int num){
        for (int = 1; i <= num; i++) {
            if ((num % 2) != 0) {
                System.out.println(i + "*");
            }
        }
    }

}

私はこれがおそらくかなり外れていることを知っていますが、私はメソッドの初心者です。

スクリーンショット:

4

4 に答える 4

5

プログラミングを開始する前に、問題を分析してください。タスクをステップに分割します。

  1. numがこの問題に有効 かどうかを確認してください。
    • num正でなければなりません。
    • num奇数でなければなりません。
    • numが複数回有効かどうかを確認していることに注意してください。最初に確認し、無効な場合はエラーメッセージで終了しnumます。または、例外をスローし、それをmainキャッチしてユーザーに報告します。
      • つまり、例外の使用方法を理解した後です。
    • ところで、num変数の悪い名前です。あまりにも一般的です。ループ インデックスを除いて、わかりやすい名前にするようにしてください。
  2. *中央の出力行を除くすべての行の前に必要なスペースの数を計算します。
  3. どのラインが中央の出力ラインであるかを計算します。
  4. 出力の上半分に対してループを実行します。
    • System.out.println()個々のキャラクターには使用しないでください。
    • このメソッドは、1 行につき 1 回だけ呼び出す必要があります。
  5. 中心線を印刷します。
  6. 出力の下半分に対してループを実行します。

mainここで、およびその他の静的メソッド ですべてを行うのをやめるようにしてください。Crossはクラスであり、クラスのインスタンスを作成して、それを機能させる必要があります。

public class Cross {
    public static void main(String[] arg) {
        Scanner keyboard = new Scanner(System.in);
        System.out.println("Please type a number: ");
        int num = keyboard.nextInt();
        Cross cross = new Cross();
        cross.drawCross(num);
    }

    private void drawCross(int size) {
        // Your turn.
    }
}

なんで?だからあなたはそれをテストすることができます。Java プログラミングで最も貴重なツールの 1 つは、JUnit ライブラリーです。ロジックを次のような小さなメソッドにオフロードする必要があります。

public boolean validSize(int size) {
    // You fill this in.
}

テスト クラスではCrossTest、次のようなコードを記述します。

@Test
public void negativeSizesAreIllegal() {
    Cross cross = new Cross();
    // Test whether cross.validSize(-13) returns false.
    // Look at the JUnit web site or any book describing the tool.
}

メソッドの要件を把握し、それぞれをチェックするテストを作成します。0、奇数の整数、偶数の整数についても同様のテストがあります。しかし、すべてのコードを静的メソッドで行う場合、それははるかに困難です。このようにして、プログラムを変更するときに、変更によってテストが壊れているかどうかがわかります。不定積分を計算し、それを微分して間違いがないかどうかを確認するようなものです。

最後に、作業を簡素化します。私があなたの問題を概説した方法では、コードの重複がたくさんあります。手順 4 と 6 で重複するコードを置き換えるメソッドを作成し、それを 2 回呼び出すことができるかどうかを確認してください。それを続けてください。プログラムを短縮する機会がたくさんあります。そのためには、テストがあることは非常に貴重です。クラスで標準メソッドを使用して、java.lang.String物事をさらに単純化することもできます。

あれ見た

System.out.println(i + "*");

あなたが思ったことをしませんでしたか?

于 2013-11-12T23:37:36.163 に答える