0

はい、これは宿題ですが、for ループだけを使用してそれを行う方法がわかりません。

ここに画像の説明を入力

for ループと if else ステートメントを使用して構造を再現できましたが、インストラクターから、それはうまくいかないと言われました。

public class Problem3 {
public static void main(String[] args) {
    /** Code under here */
        int box = 22;
        for(int i=22; i>0; i--)
        {
         if(i==18)
             System.out.println("\\\\"+"!!!!!!!!!!!!!!!!!!"+"//");
         else if(i == 14) 
             System.out.println("\\\\\\\\"+"!!!!!!!!!!!!!!"+"////");
         else if (i== 10)
             System.out.println("\\\\\\\\\\\\"+"!!!!!!!!!!"+"//////");
         else if (i == 6)
             System.out.println("\\\\\\\\\\\\\\\\"+"!!!!!!"+"////////");
         else if (i == 2)
             System.out.println("\\\\\\\\\\\\\\\\\\\\"+"!!"+"//////////");
         else if(i == 22)
             System.out.println("!!!!!!!!!!!!!!!!!!!!!!");
        }


   System.out.println("");
}    
}
4

6 に答える 6

4

いくつかのヒント:

  • 線は常に対称です
  • \行番号から行頭の番号を計算できます(0から始まります)
  • 1 行の文字数は一定なので、何文字ある!かがわかれば の数も計算できます\

これらの観察に基づいて、ネストされたループが 2 レベルだけのコードを生成できるはずです (2 ループとは言いませんでした。2 レベルだけです)。

于 2013-10-21T15:23:46.467 に答える
0

これで十分ですか?Javaも勉強中です。フィードバックをお待ちしております。

    public class Problem3 {
public static void main(String[] args) {
    /** Code under here */
    int box = 22;
    int line = 0;
    String char_1 = "w";
    String char_2 = "q";
    String char_3 = "e";
    String string = "";
    for (int i = 0; i < 6; i++) {
        for (int j = 0; j < line * 2; j++) {
            System.out.print(char_1);
        }
        for (int k = box; k > 0; k --) {
            System.out.print(char_2);
        }
        for (int l = 0; l < line * 2; l++){
            System.out.print(char_3);
        }
        System.out.println(string);
        line++;
        box = box - 4;
    }

}

}

于 2013-10-21T16:40:51.110 に答える
-1

number_of_lines、期待される出力内の行数です (この場合は 6 です)。はnumber_of_characters、各行の文字数です (この場合は 22)。

パターンがあることを私たちは知っています。左側に\、中央に!、右側に があり/ます。これは、行をループする外側のループが 1 つ必要であり、これらのセクションごとに3 つの内側のループが必要であることを意味します。

必要な各文字の数をどのように知ることができますか?

最初の行には 0 \、 22 !、および 0 があります/

2 行目には 2 \、 18 !、および 2 があります/

3 行目には 4 \、 14 !、および 4 があります/

4 行目には 6 \、 10 !、および 6 があります。/

5 行目には 6 \、 10 !、および 6 があります。/

6 行目には 8 \、 6 !、および 8 があります。/

7 行目には 10 \、 2 !、および 10 があります/

パターンがあります。各行には\/count が 2 ずつ増加し、!count が 4 ずつ減少します。

Number of\は、現在の行番号の 2 倍に等しい (最初の行番号が 0 であると仮定)。についても同様/です。の数!は、1 行に予想される合計文字数から現在の行番号の 4 倍を引いたものです (最初の行番号が 0 であると仮定)。

public void printCoolStuff(int number_of_lines, int number_of_characters){

    for(int i = 0; i < number_of_lines; i ++){

        String left= "";
        for(int j = 0; j < (2*i); j++){
            left= left+ "\"
        }

        String middle = "";
        for(int j = 0; j < (number_of_characters - 4*i); j++){
            middle = middle + "!"
        }

        String right= "";
        for(int j = 0; j < (2*i); j++){
            right = right + "/"
        }

        System.out.println(left+middle+right);
    }
}
于 2013-10-21T15:26:29.110 に答える