2017-05-06 16 views
1

If num = 8は次のような出力を表示するコードを書いていますが、そのコードはその結果を表示しません。Javaを使用してパターンを反転させる方法

System.out.printf("Enter number of row for pattern to show : "); 
      int num = input.nextInt(); 

    for(i=num-1;i>0;i--){ 
     for(j=1;j<=i;j++){ 
      if((i+j)%2==0) 
       System.out.print(0); 
      else 
       System.out.print(1); 
     } 
     System.out.println(); 
     } 

予想される出力:

10101010 
010101 
01010 
1010 
010 
10 
0 
+0

'リバースプリント???'どのように文字列が短くなりんが毎回? –

+0

このコードで何が出ていますか? –

+0

申し訳ありませんが、それは単にタイプミスです。プログラムは正常に動作していますが、私は上記のように期待される出力を得る方法について興味があります。 – Crazy

答えて

2

あなたがのために、ループでiとjを宣言する必要が

  • をコンパイルすることを防止し、あなたのコードを持ついくつかの問題がありました。
  • はこれらを修正

(あなたがi >= 0代わりのi > 0に継続条件を変更しない限り)

  • -1は、ループの最初には不要であるInteger.parseInt(num)を経て、整数への文字列のNUMを変換する必要があります...

    for (int i = Integer.parseInt(num); i > 0; i--) { 
        for (int j = 1; j <= i; j++) { 
         if ((i + j) % 2 == 0) { 
          System.out.print(0); 
         } else { 
          System.out.print(1); 
         } 
        } 
        System.out.println(); 
    } 
    

    これは出力が少し異なります。つまり、元の質問では長さ7の行が出力されず、8から6になります。また、6行目は「オフライン」です。これはほとんどの場合、元のq憂鬱。

    Original question  My output 
    
    1) 10101010    10101010 
    2) <= missing =>   0101010 
    3) 010101    101010  <== mismatch. expected ends in 1 
    4) 01010     01010 
    5) 1010     1010 
    6) 010     010 
    7) 10     10 
    8) 0      0 
    

    これは、今、私はあなたのコードにカップルの変更を行って、彼らが何であったかコメント期待出力

    10101010 
    010101 
    01010 
    1010 
    010 
    10 
    0 
    
  • +1

    さて、予想される出力ではありますが、正確にOPの質問に表示されている(おそらく間違った)出力ではありません:) – KevinO

    +0

    ありがとう。私はこの結果も得ていますが、問題は上記のような期待される出力を得る方法です。 – Crazy

    +0

    パターンが期待される出力にどのようなものがあるのか​​はっきりしていません...あなたは説明できますか?それは "普通"ではないようです。 – Adam

    0

    を与える

    for (int i = Integer.parseInt(num); i > 0; i--) { 
        if (i == 7) { 
         continue; // conform to broken question 
        } 
        if (i == 6) { 
         System.out.println("010101"); // conform to broken question 
         continue; 
        } 
        ... 
    

    の周りに加工することができます。 I ...入力

  • 呼ば

    1. 宣言Scanner方法は、(むしろStringより)タイプintのごforループ

    2. 固定
    3. 宣言ijnumを作りました最初のforループ(以前はi=num-1は、i=numである必要があります)。

    、以下に示すコード:

    Scanner input = new Scanner(System.in); //created Scanner method 
         System.out.printf("Enter number of row for pattern to show : "); 
         int num = input.nextInt(); //num should be of type 'int', not String 
    
         for(int i=num; i>0; i--) { //Declared 'i', 'i' should equal 'num', not 'num-1' 
          for(int j=1; j<=i; j++) { //Declared 'j' 
           if((i+j)%2==0) 
            System.out.print(0); 
           else 
            System.out.print(1); 
          } 
          System.out.println(); 
         } 
    

    そしてnumが8であるとき、あなたは所望の出力を得る:

    Enter number of row for pattern to show : 8 
    10101010 
    0101010 
    101010 
    01010 
    1010 
    010 
    10 
    0 
    
  • +0

    これはAdamsの投稿とよく似ていますが、Integer.parseInt()を使いましたが、私は 'num'を' int'と宣言しました。私はあなたがあなたの質問で与えた出力がタイプミス(2行の行が0で始まっている)であるとも仮定しました。これは誤字ではない場合は私に教えてください、私は私の投稿を編集することができます。 – CodingNinja

    +0

    @心心傷心この回答があなたに役立つなら、それを受け入れてください。 – CodingNinja

    関連する問題