2

//質問自体(その後の私のコード)

変数 n は、ランダムに生成された整数です。文字 '*' と '#' を出力して、最初の行に星のみが含まれ、最後の行に番号記号のみが含まれるようにします。星の数は、連続する行ごとに減少します。行の合計文字数は n で、n + 1 行あります。

たとえば、n の値が 5 の場合、プログラムは次のように出力します。

 *****  
 ****#    
 ***##      
 **###       
 *####      
 #####      

//以下の私のコード!

Random r = new Random();       
int n = r.nextInt(5) + 10;    
System.out.println("n: "+n);

while(n>0){

for(int star = n; star>0; star--){
  System.out.print("*");
}

for(int hash = 0; hash<n; hash++){
  System.out.print("#");

    } 

    System.out.println("");  //new line
n--;


}

//私のコード出力 - 問題: # のサイズは、* のように減少するのではなく、0 から増加する必要があります

**********##########
*********#########
********########
*******#######
******######
*****#####
****####
***###
**##
*#
4

5 に答える 5

1

自分がいる回線を覚えておいてください。アルゴリズムの話は必要ありません。

final int n = 4; 

int lineNr = 0;

while (n >= lineNr)
{
    for (int i = 1; i <= n - lineNr; i++)
        System.out.print("*");

    for (int j = 1; j <= lineNr; j++)
        System.out.print("#");

    System.out.println();
    lineNr++;
}
于 2013-08-26T13:18:17.983 に答える
0

*現在、各反復で正しい数のs を出力しています。出力する sの数は#、実行中の反復と常に同じです (0 から開始)。したがって、これ (たとえば、i) のカウンターを保持できます。このカウンターは 0 に初期化され、各ループ反復の終わりに 1 回インクリメントされます。次に、にループして sを出力whileできます。#i

for (int hash = 0; hash < i; hash++) {
    System.out.print("#");
}

ただし、より良いアプローチは、for-loop の代わりに -loop を使用し、whileを変更しないようにすることですn。反復時にs とsを出力する必要があることに注意してください。ithn - i *i #

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

    for (int star = 0; star < n - i; star++) {  // n-i stars
        System.out.print("*");
    }

    for (int hash = 0; hash < i; hash++) {  // i hashes
        System.out.print("#");
    }

    System.out.println();  // don't need an empty string here
}
于 2013-08-26T13:11:46.247 に答える
0

ループ内で n を変更しないでください。n によって各行のシンボルの総数が得られるからです。ここでは、プログラムを保持し、while ループで使用する変数 i を導入しました。

Random r = new Random();       
int n = r.nextInt(5) + 10;    
System.out.println("n: "+n);
int i=n;

while(i>=0){

  for(int star = i; star>0; star--){
    System.out.print("*");
  }

  for(int hash = i; hash<n; hash++){
    System.out.print("#");
  } 

  System.out.println("");  //new line
  i--;
}
于 2013-08-26T13:22:24.233 に答える
0

starループで問題なく開始していますが、ループでは、プログラムに、カウントアップしてその数のハッシュマークを出力hashするように指示しています。n

代わりに、星の数またはハッシュの数を表す別の数値が必要です。から減算しnて、他の数を取得します。ネストされたforループを使用します。外側のものはn各行を印刷するためにカウントされ、内側のものは 0 からlineNumber星の印刷までカウントされ、次にnハッシュの印刷までカウントされます。

于 2013-08-26T13:13:43.183 に答える