A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 龚建锋 初级黑马   /  2012-7-26 19:37  /  2867 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.util.*;
public class GoldTower {
public static void main(String[] args) {
  Scanner sc = new Scanner(System.in);
  int m = sc.nextInt();
  for (int i = 0; i < m; i++) {
   // 输出空格
   for (int j = 0; j < m - i - 1; j++) {
    System.out.print(" ");
   }
              //输出星号
   for (int k = 0; k < i * 2 + 1; k++) {
   
    System.out.print("*");
   }
   
   System.out.println();
  }
}
}
//上面是一个输出金字塔的小程序,执行结果如图。问题是怎么样改变金字塔图形的位置,比如中间显示或靠右显示呢?

星号金字塔.jpg (24.22 KB, 下载次数: 108)

星号金字塔.jpg

评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 赞一个!

查看全部评分

6 个回复

倒序浏览
  1. import java.util.*;

  2. public class GoldTower {
  3.         public static void main(String[] args) {
  4.                 Scanner sc = new Scanner(System.in);
  5.                 int m = sc.nextInt();
  6.                 for (int i = m; i >= 0; i--) {//修改下这里应该是就可以了,输出我没有测试,或许有点误差,但是稍微修改下也能搞定吧!加油!
  7.                         // 输出空格
  8.                         for (int j = 0; j < m - i - 1; j++) {
  9.                                 System.out.print(" ");
  10.                         }
  11.                         // 输出星号
  12.                         for (int k = 0; k < i * 2 + 1; k++) {

  13.                                 System.out.print("*");
  14.                         }

  15.                         System.out.println();
  16.                 }
  17.         }
  18. }
复制代码
回复 使用道具 举报
晕,这是控制台设置。

不然就只能依靠添加空格来控制输出位置了。
当然,如果是web项目,可以通过css样式来改变输出的内容。
回复 使用道具 举报
你可以在每行*号输出之前先多输出一些空格,然后在输出*号
回复 使用道具 举报
除了每个行循环里加空格之外,应该没有什么其他的方法
回复 使用道具 举报
本帖最后由 李东升 于 2012-7-27 11:22 编辑
  1. public static void main(String[] args) {
  2.                          Scanner sc = new Scanner(System.in);
  3.                           int m = sc.nextInt();
  4.                           
  5.                           for (int i = 0; i < m; i++) {
  6.                                   for(int j=0;j<2*m;j++){//这里2*m改成4*m就是往右移动两个金字塔块的位置。
  7.                                           System.out.print(" ");
  8.                                   }
  9.                            // 输出空格
  10.                                   for (int j = 0; j < m - i - 1; j++) {
  11.                                           System.out.print(" ");
  12.                                   }
  13.                                       //输出星号
  14.                                   for (int k = 0; k < i * 2 + 1; k++) {
  15.                            
  16.                                           System.out.print("*");
  17.                                   }
  18.                            
  19.                            System.out.println();
  20.                           }
  21.                         }
复制代码
可以把你输出的金字塔和旁边的空格看做一个正方块,输入的数字就是这个正方块的二分之一边长,那么,我们可以在这个金字塔的正方块前面同样放一个同样的正方块,把金字塔块往右边挤,但是这个正方块是看不到的,所以也用空格来代替。这个思路来看的话,在每次输出金字塔块的一行时,都在前面加上相等长度的空格,这样就可以了。我的代码只是往右边移动了一个金字塔块的长度,需要移动到中间或者靠右边,把m多增加几倍就可以了。
其实,这样做是完全没意义的,因为这个是控制台输出,不是图形界面。


评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 赞一个!

查看全部评分

回复 使用道具 举报
李东升 发表于 2012-7-27 11:16
可以把你输出的金字塔和旁边的空格看做一个正方块,输入的数字就是这个正方块的二分之一边长,那么,我们可 ...

谢谢,测试OK!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马