2017-09-09 10 views
-4

私が直角代替アスタリスクと番号記号を試してみたいと思います:(私を助けてくださいしかし、私はこれだけ出力ました:。(私はここ数記号を配置することはできません)Javaの番号記号とアスタリスクは

* 
** 
*** 
**** 
***** 
****** 

私が欲しいのは、私は6を入力した場合に出力され、この次のとおりです。

* 
# 
    * 
    # 
    * 
    # 

サンプル私は3を入力した場合、出力は次のとおりです。

* 
# 
    * 

ここでトンです彼は私がプログラムされていることコーディング:

public static void main (String[] args) { 
    Scanner in = new Scanner(System.in);   

    int x=0; 

    System.out.println("Enter number: "); 
     x = in.nextInt(); 

    for(int i = 1; i <= x; i++){ 


    for(int j = 0; j < i; j++){ 
     System.out.print("*"); 

      } 
      System.out.println(); 
     } 

    } 
     } 
+3

コードでも代替記号が印刷されますか?少なくともシンボルを交互に変えて作業をしてみてください。しばらくパターンを無視してください。それから、うまくいかないものを思いついてください。 – nullpointer

+0

私は初心者です、このプログラムを手にするにはどうすればいいですか? – aezakmi

答えて

0

内側のループに印刷スペースを確保し、内側のループから印刷されたら、それに応じて*および/または#を印刷します。

Scanner in = new Scanner(System.in);   

    int x=0; 

    System.out.println("Enter number: "); 
    x = in.nextInt(); 

    for(int i=1;i<=x;i++){ 

     for(int j=1;j<=i;j++){ 
      System.out.print(" "); 
     } 

     if(i%2==1) 
     { 
      System.out.println("*"); 
     }else 
     { 
      System.out.println("#"); 
     } 
    } 

>>>Demo Link<<<

0

だけの行とCOLの位置をテストし、正しい文字を書き込むことによって、正しい出力を書きます

j < i-1 ? " " : (i % 2 != 0 ? "*" : "#") 

これにより"*"を交換してください。

+0

私はちょうど試しました、それは正しく動作します。試しましたか? –

+0

@nullpointer:あなたが言う*慎重に質問をお読みください、パターンは異なっています*。私の答えでは、あなたが見たはずのように、両方のパターンがあります(私はそれを読んだことがありますか?)。あなたの疑いが間違っていたことを理解したので、あなたはコメントについて語ります。繰り返しますが、私の答えを慎重に読んだことはありませんでした。今、リモートJavaコンパイラリンクを与えることを求めているのは... 20文字のコードで最高です。私はそれが私のために働いていると言いました。あなたが私を信頼しないならば、自分で試してみてください。私のようにあなたの疑問を抱き、事実を話してください。 –

0

シンボルを保持するcharアレイを作成することをお勧めします。カウンター変数を使用して、反復ごとに表示したい文字のインデックスを指すようにすることができます。

char sym[] = {'#', '*'}; 
int n = user's input, i,j,c=1; 
for(i = 1; i<=n; i++){ 
    for(j = 1; j<i; j++) 
     System.out.print(" "); //space 

    System.out.print(sym[c%2]); 
    c++; 

    System.out.println(); 
} 

注:お知らせ方法私は基本的に整数を保持する変数cを使用して、インデックスを取得するには、2で割っだときの余りを見つけています。

これはnの大きな入力値に対して非常に悪い考えですが、質問で述べた種類の入力には有効です。

0

だけ必要があり、奇数と偶数値の条件を持っているを配置してもと* 奇数にして1からjの値を開始し、ループの内側のための条件J < = I

を持っている私は、以下のように見えるようにコードを変更:

for(int i = 1; i <= 6; i++){ 
        for(int j = 1; j <=i; j++){ 
         if(i==j){ 
           if(i%2==0){ 
            System.out.print("#"); 
           }else{ 
            System.out.print("*"); 
           } 
         }else{ 
           System.out.print(" "); 
         } 
        } 
        System.out.println(); 
       } 
0
public static void main(String[] args) { 
    Scanner in = new Scanner(System.in); 
    System.out.print("Enter number: "); 
    int x = in.nextInt(); 

    String spaces = ""; 
    boolean star = true; 

    for (int i = 0; i < x; i++) { 
     System.out.println(spaces + (star ? "*" : "#")); 

     spaces += " "; 
     star = !star; 
    } 
} 

これはトリック、簡単に素早く&を行う必要があります。

関連する問題