2016-09-04 6 views
2

私はJavaを使い慣れていないので、言語の理解を高めるためにいくつかの基本的なことを混乱させようとしています。私が達成しようとしているのは次のとおりです。入力に基づいて正の整数サイズとプロット番号の三角形を読む

正の整数サイズを読み、この入力に基づいて三角形をプロットするプログラムを作成します。あなたは次のように三角形をプロットする必要があり、数5を入力とし(1行目のプリント4つのスペースと数5を、2行目のプリント3つのスペースと数字4および5、など):

 5 
    45 
    345 
2345 

これまでのところ、私が持っていますこの:

import java.util.Scanner; 

class Triangle 
{ 
    public static void main(String [] args) 
    { 
     int number, space; 

     Scanner in=new Scanner(System.in); 

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


     for (int i=1; i<=number; i++) 
     { 
      for (int j = number; j>=1; j--) 
      { 
       if (j>i) 
        System.out.print("_"); 
       else 
        System.out.print(j); 

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

私は近いんだけど、アップ混乱何にもしたいし、溶液からさらにアップ終わりません。私はちょうど私の開始と終了の番号を切り替える必要があるようだ。

誰でも助けていただければ幸いです。

+0

あなたの出力は質問に一致しません。最初の行には6つのスペースが含まれています.4ではなく最後の行に12345がありません。それは正しい? – Shahid

+0

ものすごく混乱する心配はありません。あなたはいつでもjavaファイルのバージョンをバックアップし、必要に応じてそれに戻すことができます。 IDEを使用している場合、以前のバージョンを履歴から読み込むことができます。 – c0der

答えて

0

私が行ってコメントに記載した変更は完璧です!

import java.util.Scanner; 

class Triangle 
{ 
    public static void main(String [] args) 
    { 
     int number, space; 

     Scanner in=new Scanner(System.in); 

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


     for (int i=1; i<=number; i++) 
     { 
      for (int j = number; j>=1; j--) 
      { 
       if (j>i) 
        System.out.print(" ");   //print space instead of _ 
       else 
        System.out.print(number+1-j); //print number+1-j which will be you decreasing Sequence 

     } 
     System.out.println();}}} 
+0

ありがとう。私はこれが私が持っている最後の質問ではないと確信しています... :) – user1729377

+0

Hehe!あなたは毎回プログラマーとして質問をするべきです。 –

1

私は2つの以下の入れ子のループを使用します:あなたのコードを修正するに

for (int i=number-1; i >= 0; --i) { 
    String spaces = new String(new char[i]).replace("\0", " "); 
    String nums = ""; 
    for (int j=i+1; j <= number; ++j) { 
     nums += String.valueOf(j); 
    } 

    System.out.println(spaces + nums); 
} 
0

を:代わりにjのカウンタをプリントアウトの:

System.out.print(j); 

あなたは

を印刷したいです
System.out.print(number -(j-1)); 

代替ソリューション:

public static void main(String [] args) { 

    int number =5, numberOfSpaces; 

     for (int row=1; row<= number ; row++) { 

      numberOfSpaces = number - row; 

      for (int column=1; column<= number ; column++) { 

       if(column<=numberOfSpaces) { 

       System.out.print(" "); 

       }else { 

       System.out.print(column); 
       } 
      } 

      System.out.println(); 
     } 

    } 

正確に同じことを短いバージョン:

public static void main(String [] args) { 

    int number =5, numberOfSpaces; 

    for (int row=1; row<= number ; row++) { 

      numberOfSpaces = number - row; 

      for (int column=1; column<= number ; column++) { 

       System.out.print((column<=numberOfSpaces) ? " " : column); 
      } 

      System.out.println(); 
    } 
} 
+0

非常に感謝しています。 – user1729377

+0

フィードバックいただきありがとうございます。 http://stackoverflow.com/help/someone-answersをご覧ください。 – c0der

0

あなたが望んでいただけの方法:わかりやすいです。楽しい!

import java.util.*; 
    class Triangle 
    { 
     public static void main(String [] args) 
     { 
      int number, space; 
      Scanner in=new Scanner(System.in); 
      System.out.println("Enter The Number:"); 
      number = in.nextInt(); 
      for (int i=1; i<=number; i++) 
      { 
       for (int j = 1; j<=number; j++) 
       { 
        if (j>number-i) /**the only problem you were having in your code was that it was printing it in reverse.. I reversed the loop and modified` to do so*/ 
         System.out.print(j); 
        else 
         System.out.print(" "); 
       } 
       System.out.println(); 
      } 
     } 
    } 
関連する問題