
正文
金字塔java代码和解释 java数字金字塔代码怎么打
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
用java的for循环编写程序,输出以下数字金字塔,最好带注释。
主要是每行的输出问题,分别是每行的:空格,数字(包活从小到大跟从大到小),还有没换行结尾的换行符,核心是弄清楚每行空格输出数量跟行的关系,已经数字的起始输出已经结束数字界定等;
核心for循环如下,本人用UltraEdit 测试,完美通过,完美输出,类图片个输出界面也附下面了
for(n=1; n=5; n++) { //最外层循环控制输出的行数,分别是第一到第五行;
for(i=1; i=5-n; i++) { //这个循环控制每行前面的空格输出,如:第一个前面输出4个空格;
System.out.print(" ");
}
for(j= 5-n+1; j=5; j++) { // 这个循环控制中间数字一直到5的输出,如第一行一个5,第二行为4 5
System.out.print(j);
}
for(k=4; k5-n; k--) { //这个循环控制中间数字5之后的数字,如第一行不输出任何,第二行为4
System.out.print(k);
}
System.out.print("\n"); //这个是本行输出结束之后输出一个换行符
}
相关问答
Q1: 在java中编一个可以输出星号金字形状的程序,挂上详解!重谢
用星号来打印金字塔,有一定的规律:
1、中心对齐;
2、从上往下,每一层的星星个数都是奇数,而且每一层星星数量可以用以下公式来计算:2*n-1;
3、每一层前面都会出现空位,前面的空位数为当前层数减1,即满足公式:n-1
根据上述规律,我们得出如下算法:
public void testKing() {
// 定义金字塔层数
int n = 7;
for (int i = 1; i = n; i++) {
// 第一层循环,打印出对应的层数
for (int k = 1; k = n - i; k++) {
// 本层循环,打印出当前层的空位
// 空位数为当前层数减1,即满足公式:n-1
System.out.print(" ");
}
for (int j = 1; j = 2 * i - 1; j++) {
// 本层循环,打印出当前层的星星个数
// 每一层的星星个数都是奇数,且数量可以用以下公式来计算:2*n-1
System.out.print("*");
}
// 打印出一个换行
System.out.println();
}
}
结果示例:
*
***
*****
*******
*********
***********
*************
Q2: 求镂空的倒金字塔java代码....金字塔可用*代替! 谢了
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import javax.swing.JFrame;
import javax.swing.JPanel;
// 点阵法:
// 首先,我们假设金字塔是等边三角形,等边三角形与矩形的关系是:
// 1, 底边是矩形的宽度
// 2, 高是举行的长度
// 3, 顶点是矩形的底边中点
// *******
// |* *|
// | * * |
// ---*---
// 这样,如果我们知道矩形的长和宽,我们就能指导等边三角形在矩形每一行中的点位于什么位置了:
// 若长(height)为4,宽(width)为7.
// 计算等边三角形在某一行x的两点位置为:
// 若x == 1, 则整行都是三角形的边
// 若x == 4, 则只有中点是三角形的边。中点 = width / 2 + (width % 2 0 ? 1 : 0)
// 若 x 1 x 4,则左点 = width / (2 * height) * x; 右点 = width - width / (2 * height) * x + 1;
// 知道了三角形的点,我们就能画出金字塔了。
// Java2D
// 首先,找到三角形的三个点,在两两相连即可。
// 示例如下:
public class Question1 {
// 矩形
class Rec{
int height;
int width;
public Rec(int height, int width){
this.height = height;
this.width = width;
}
public int getHeight() {
return height;
}
public int getWidth() {
return width;
}
}
// 以字符串打印形式绘制[点阵法]
public Question1(int height, int width, char shape) {
height = height = 0 ? 3 : height; // 对参数进行验证整理
width = width = 0 ? 3 : width; // 对参数进行验证整理
// 每行有多少点?
int rowPoints = width;
// 不要忘记每行最后还有换行符
rowPoints ++;
// 总共有多少点?
int totalPoints = rowPoints * height;
char[] allChar = new char[totalPoints]; // 所有行的字符
// 特殊处理第一行
for(int i = 0; i rowPoints; i++){
if(i rowPoints - 1) // rowpoints位是换行符,所以这里需要特殊处理。
allChar[i] = shape;
else
allChar[i] = '\n';
}
// 处理从第二行到倒数第二行
for(int i = 2; i height; i++){
//左点 = width / (2 * height) * x; 右点 = width - width / (2 * height) * x + 1;
// 但是这里得牢记,运算符的运算顺序,所以必须这样写:
int leftpoint = (width * i) / (2 * height);
int rightpoint= width - (width * i) / (2 * height) + 1;
for(int j = 0; j rowPoints; j++){
int index = (i - 1) * rowPoints + j; // 这里对数组index的计算很重要,千万别算错了。
if( j rowPoints - 1){
if(j + 1 == leftpoint || j + 1 == rightpoint) // 列序号从0开始,但点位是从1开始的,所以给列序号+1
allChar[index] = shape;
else
allChar[index] = ' ';
}else{
allChar[index] = '\n';
}
}
}
//特殊处理最后一行
int point = width / 2 + (width % 2 0 ? 1 : 0);
int startIndex = (height - 1) * rowPoints;
for(int i = 0; i rowPoints; i++){
if( i rowPoints - 1){
if( i + 1 == point)
allChar[startIndex + i] = shape;
else
allChar[startIndex + i] = ' ';
}else
allChar[allChar.length - 1] = '\n';
}
String result = new String(allChar);
System.out.print(result);
}
class PanelContainer extends JPanel{
private Point point1;
private Point point2;
private Point point3;
public PanelContainer(Point point1, Point point2, Point point3){
this.point1 = point1;
this.point2 = point2;
this.point3 = point3;
setBackground(Color.white);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if(point1 != null point2 != null point3 != null){
g.setColor(Color.red);
Graphics2D g2d = (Graphics2D) g;
g2d.drawLine((int)point1.getX(), (int)point1.getY(), (int)point2.getX(), (int)point2.getY());
g2d.drawLine((int)point2.getX(), (int)point2.getY(), (int)point3.getX(), (int)point3.getY());
g2d.drawLine((int)point1.getX(), (int)point1.getY(), (int)point3.getX(), (int)point3.getY());
}
}
}
//Java2D
public Question1(int height, int width) {
JFrame frame = new JFrame("Java2D 三角形");
frame.setBounds(50, 50, 400, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Point point1 = new Point(50, 50);// 让图形举例边界50像素
Point point2 = new Point(width + 50, 50);
Point point3 = new Point(width/2 + 50, height + 50);
PanelContainer container = new PanelContainer(point1, point2, point3);
frame.getContentPane().add(container);
frame.setVisible(true);
}
public static void main(String args[]){
new Question1(200, 300, '*');
new Question1(200, 300);
}
}
金字塔java代码和解释的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java数字金字塔代码怎么打、金字塔java代码和解释的信息别忘了在本站进行查找喔。







