当前位置: 代码迷 >> Java相关 >> 打印正三角形
  详细解决方案

打印正三角形

热度:209   发布时间:2012-11-26 21:29:32.0
打印正三角形
          *                    //空10个空格打印1个字母   星星循环1次
         ***                   //空 9个空格打印3个字母           3
        *****                  //空 8个空格打印5个字母           5
       *******                 //空 7个空格打印7个字母           7
      *********                //空 6个空格打印9个字母           9
     ***********               //空 5个空格打印11个字母          11
    *************              //空 4个空格打印13个字母          13
   ***************             //空 3个空格打印15个字母          15
  *****************            //空 2个空格打印17个字母          17
*******************           //空 1个空格打印19个字母          19


嵌套2个 循环 一个 循环控制 空格 一个控制星星
控制空格的理解了 ;
但是 星星的那个 很烦啊。。。
第1行:1个
第2行:3个

每行逐渐2个的递增  这个 要怎么写?
搜索更多相关的解决方案: 打印  字母  正三角形  

----------------解决方案--------------------------------------------------------
这样写,每循环一次,也就是把i++改成i=i+2;这样就可以了
----------------解决方案--------------------------------------------------------
外面一个for(;;k+=2;)循环;里面两个for()循环,一个打空格,一个打“*”;懂?
----------------解决方案--------------------------------------------------------
三个循环复杂度明显就高上去了,可以一个循环控制行数,一个循环控制空格和*,里面的循环加上一个判断就行。
  int n = 11;
  int t = n;
  for(int i=0;i<10;i++) {
    t--;
    for(int j=0;j<n;j++) {
      if(j<t)
        System.out.print(" ");
      else
        System.out.print("*");
    }
    System.out.println();
    n++;
  }

  你只要知道空格加*的个数是递增的,而空格的个数是递减的就好办了,用两个变量去控制。

[ 本帖最后由 jafisher 于 2012-12-6 16:21 编辑 ]
----------------解决方案--------------------------------------------------------
import java.util.Scanner;

public class test1 {
      public static void printSpace(int space)
    {
        for (int i=0;i<space;i++)
        System.out.print(" ");
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner Cin=new Scanner(System.in);
        System.out.print("请输入各行最多的*号数值:");
        int row=Cin.nextInt();
        for(int i=row;i>0;i=i-2)
        {
            //上三角
            //输出每行空格
            printSpace((row-i)/2);
            //输出row个×
            for(int j=i;j>0;j--)
                System.out.print("*");
                System.out.println();
        }      
}
就这样了,不知道是不是你要的呢


----------------解决方案--------------------------------------------------------
程序代码:
    for(int i = 1 ; i < 10 ; i++)
    {

        for(int j = 10 ; j > i-1 ; --j)
        {
            cout<<" ";
        }
        for (int m = 0 ; m < i*2-1 ; ++m)
        {
            cout<<"*";           

        }
        cout<<endl;
    }



[ 本帖最后由 fz19910125 于 2012-12-6 17:58 编辑 ]
----------------解决方案--------------------------------------------------------
楼上的好,用i<2*n-1
----------------解决方案--------------------------------------------------------
public static void main(String[]args){
        for(int i=1;i<11;i++){
            for(int j=i;j<11;j++){
                System.out.print(" ");
            }
            for(int z=1;z<=i*2-1;z++){
                System.out.print("*");
            }
            System.out.println();
        }
        
    }
----------------解决方案--------------------------------------------------------
  相关解决方案