求:用Java语言写只用一个for循环输出“*”组成的空心菱形的思路或代码

 我来答
fuhaiwei
2013-03-28 · TA获得超过3409个赞
知道大有可为答主
回答量:974
采纳率:75%
帮助的人:1366万
展开全部
//只用一个for循环等于用一维的思维处理二维的问题,这就必须找到两者之间的关系。
//经过观察,发现*出现的位置与所处行数确有一定关系。

import java.util.Arrays;

public class ForTest {
public static void main(String[] args) {
int midIndex = 4;
int size = midIndex * 2 + 1;
for (int index = 0; index < size; index++) {
char[] c = new char[size];
Arrays.fill(c, ' ');
int x1 = Math.abs(midIndex - index);
c[x1] = '*';
c[midIndex * 2 - x1] = '*';
System.out.println(new String(c));
}
}
}
匿名用户
2013-03-29
展开全部
用嵌套for循环实现

/*
思路

下面是一个边长为4的棱形

* ............第1行开始打印了3个空格(4-1=3)
* * ............第2行开始打印了2个空格(4-2=2)
* * ............第3行开始打印了1个空格(4-3=1)
* * ............第4行开始打印了0个空格(4-4=0)。由此可得出规律,第i行开始打印的空格数为 边长-行号
-----------------分界线,将棱形分成上下两部分,进行对称打印------------
* *
* *
*

*/

//Java Code

class test
{
public test()
{
int n=4;//棱形的边长
int i,j,k,count;
//先打印上半部分
for(i=0;i<n;i++)
{
for(j=1;j<n-i;j++)
System.out.print(" ");
if(0==i) //首、尾行只包含一个"*",当独打印
System.out.println("*");
else
{
count=2*i+1;
for(k=0;k<count;k++)
{
if(0==k||count-1==k) //首尾打印"*"
System.out.print("*");
else //其他位置打印空白(" ")
System.out.print(" ");
}
System.out.print("\n");
}
}

//对称地输出下半部分
for(i=n-2;i>=0;i--)
{
for(j=0;j<n-i-1;j++)
System.out.print(" ");
if(0==i)
System.out.println("*");
else
{
count=2*i+1;
for(k=0;k<count;k++)
{
if(0==k||count-1==k)
System.out.print("*");
else
System.out.print(" ");
}
System.out.print("\n");
}
}
}

//mian方法
public static void main(String[] args)
{
test t=new test();
}
}

运行得到如下结果:
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式