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