用java编程: 输出一个用*号组成的菱形! * *** ***** *** *

写个容易看的然后解释一下!... 写个容易看的 然后解释一下! 展开
 我来答
lp503609
2011-03-14 · TA获得超过436个赞
知道小有建树答主
回答量:67
采纳率:0%
帮助的人:90.4万
展开全部
i j/k 0 1 2
0 0 0 0
1 0 0
2 0
i代表行数
j/k代表列数

0 1 2 3 4
0 0
1 0 0
2 0 0 0
如图所示:
for(int i=0;i<n;j++){
for(int j=0;j<n-i;j++){
}
for(int k=0;k<i+1;k++){
}
System.out.println();
}
算法:
设边长为n
建立一个n*n直角梯形坐标盘,将前几位以依次递减的顺序改为空格因为是一行一行打印的,所以先打印n-1个空格最后添加“* ”可以发现规律前几位的空格完了后,是以如下过程循环的(用0代表空格)
0 0 0 * 0
0 0 * 0 * 0
0 * 0 * 0 * 0
既是以*0*0的过程循环
打印上三角边长为n
当第一行时i=0;
j=0是打印空格,j=1打印空格至j=n-1,
当第二行时i=1;
j=0,j=1....j=n-1打印空格
如此类推得到一个依次递减的结构
i增加,j被限制减小
所以for(int j=0;j<n-i;j++){}

打印“*”,因为在前头分析可看出是以“*0”循环的,可以再后面循环添加“*0”,因为是依次递增的
0 0 * 0
0 * 0 * 0
* 0 * 0 * 0
可写作for(int k=0;k<i+1;k++)

下三角
0 * 0 * 0 * 0 * 0
0 0 * 0 * 0 * 0
0 0 0 * 0 * 0
0 0 0 0 * 0
这个和上个很相似
空格是依次递增的
i=0;j=0
for(int j=0;j<i+1;j++)
加”*0”依次递减
for(int k=0;k<n-i;k++)
程序列子如下
import java.util.Scanner;

public class Test1 {

public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("n*n的菱形请输入n");
//input
int n=sc.nextInt();
//打印上三角
for(int i=0;i<n;i++){//控制行数,做一个边长为4个*的等腰上三角形
for(int j=0;j<n-i-1;j++){//打印空格下直三角
System.out.print(" ");
}
for(int k=0;k<i+1;k++){//打印空格后的每一个*号和空格
System.out.print("* ");
}
System.out.println();
}
//打印下三角
for(int i=0;i<n-1;i++){//控制行数,做一个等腰下三角形
for(int j=0;j<i+1;j++){//
System.out.print(" ");
}
for(int k=0;k+i+1<n;k++){
System.out.print("* ");
}
System.out.println();
}
}
}
摘阳殃烦与灵25
2011-03-15
知道答主
回答量:32
采纳率:0%
帮助的人:19万
展开全部
import java.util.Scanner;

public class aa {
private int lineSize;//菱形总共占的行数:注:只能是单数!
public aa(int max){
if(max<0){
System.out.println("您输入的数据不合法:必须是大于0的整数!");
return;
}else if(max%2==0){
System.out.println("您输入的如果是偶数;将会自动加1再输出!");
this.lineSize = max+1;
}else{
this.lineSize= max;
}
//mid为最中间是第几行(行号)!
//比如输出图形为9行的菱形,中间行就是第5行,mid就是5;
int mid = (lineSize+1)/2;
for(int i=1;i<=lineSize;i++){
int j,k;
if(i<=mid){
for(j=1;j<=mid-i;j++)
System.out.print(" ");
for(k=1;k<=2*i-1;k++)
System.out.print("*");
}else{
for(j=1;j<=i-mid;j++)
System.out.print(" ");
for(k=1;k<=lineSize-2*(j-1);k++)
System.out.print("*");
}
System.out.print("\n");
}
}

public static void main(String[] args) {
while(true){
Scanner sc = new Scanner(System.in);
System.out.println("请输入您想要打印的菱形的行数,然后回车确认(注:数字只能是大于0的整数!");
System.out.print("请输入:");
int lineSize = sc.nextInt();
System.out.println("---------------------------");
new aa(lineSize);//要打印的菱形的行数!
System.out.println("---------------------------");
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
flyingFish211
推荐于2018-03-01 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.5万
采纳率:50%
帮助的人:1.1亿
展开全部
public class Cat {

public static void main(String[] args) {

int num = 2;

drawDiamond(num);

}

private static void drawDiamond(int num) {
for (int i = 0; i < num; i++) {

for (int j = num - i; j > 0; j--) {
System.out.print(" ");
}

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

System.out.print("\n");
}

for (int i = num; i >= 0; i--) {
for (int j = i; j < num; j++) {
System.out.print(" ");
}
for (int z = 0; z <= i * 2; z++) {
System.out.print("*");
}
System.out.print("\n");
}
}
}

-------------
*
***
*****
***
*
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fdf515
2011-02-28
知道答主
回答量:16
采纳率:0%
帮助的人:15.8万
展开全部
Class Test {
public static void main(String[] args){
System.out.println(" * ");
System.out.println(" *** ");
System.out.println(" ***** ");
System.out.println(" ******* ");
System.out.println(" ***** ");
System.out.println(" *** ");
System.out.println(" * ");
}
}

最简单的方法。 如果你想用 loop做,就考虑一下每一行的行号跟 每一行*号个数 的关系。 假设给定一行总共有20个字符。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友e0416fd
2011-03-10
知道答主
回答量:17
采纳率:0%
帮助的人:1.9万
展开全部
for(int i=2;i>=-2;i--)//控制行数
{
for(int j=0;j<Math.abs(i)+1;j++)
System.out.print(" ");//控制每行的的空格数,如果第5行前面不要空格,可以把+3去掉
for(int j=0;j<(5-Math.abs(i)*2);j++)
System.out.print("*");//控制每行*的个数

System.out.println();//换行
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式