public class Demo {
“專業(yè)、務(wù)實(shí)、高效、創(chuàng)新、把客戶的事當(dāng)成自己的事”是我們每一個(gè)人一直以來(lái)堅(jiān)持追求的企業(yè)文化。 創(chuàng)新互聯(lián)公司是您可以信賴的網(wǎng)站建設(shè)服務(wù)商、專業(yè)的互聯(lián)網(wǎng)服務(wù)提供商! 專注于成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、軟件開(kāi)發(fā)、設(shè)計(jì)服務(wù)業(yè)務(wù)。我們始終堅(jiān)持以客戶需求為導(dǎo)向,結(jié)合用戶體驗(yàn)與視覺(jué)傳達(dá),提供有針對(duì)性的項(xiàng)目解決方案,提供專業(yè)性的建議,創(chuàng)新互聯(lián)建站將不斷地超越自我,追逐市場(chǎng),引領(lǐng)市場(chǎng)!
public static void main(String args[]) throws Exception {
? for (int i = 1; i = 5; i++) {
? ? ? for (int j = 1; j = 5 - i; j++) {
? ? ? ? ? System.out.print(" ");
? ? ? }
? ? ? for (int k = 1; k = 2 * i - 1; k++) {
? ? ? ? ? System.out.print('*');
? ? ? }
? ? ? System.out.println();
? }
? for (int i = 1; i = 4; i++) {
? ? ? for (int j = 1; j = i; j++) {
? ? ? ? ? System.out.print(" ");
? ? ? }
? ? ? for (int k = 7; k = 2 * i - 1; k--) {
? ? ? ? ? System.out.print('*');
? ? ? }
? ? ? System.out.println();
? }
}
}
思路:
*??第1行??空格數(shù)3(4-1)?星星數(shù)1(1*2-1)
***??第2行??空格數(shù)2(4-2)?星星數(shù)3(2*2-1)
*****??第3行??空格數(shù)1(4-3)?星星數(shù)5(3*2-1)
*******??第4行??空格數(shù)0(4-4)?星星數(shù)7(4*2-1)
通過(guò)以上思路就可以打印出菱形
代碼:
public class Lin {
public static void main(String[] args) {
// TODO 自動(dòng)生成的方法存根
int i,j,k;
for(i=0;i5;i++)??? //控制行
{??
for(j=0;j5-i;j++)?? //控制空格
System.out.print(" ");
for(k=0;k2*i-1;k++)?? //控制*號(hào)輸出
System.out.print("*");
System.out.print("n");
}
for(i=3;i0;i--)
{
for(j=0;j5-i;j++)
System.out.print(" ");
for(k=0;k2*i-1;k++)
System.out.print("*");
System.out.print("n");
}
}
}
public?class?Test2014111801?{
public?static?void?main(String[]?args)?{
int?size?=?10;
if?(size?%?2?==?0)?{//用size除以2余數(shù)等于0,說(shuō)明size是個(gè)偶數(shù),但菱形長(zhǎng)度都是奇數(shù)的,所以需要加1
size++;
}
//整個(gè)循環(huán)都是從上到下,從左往右一個(gè)一個(gè)畫(huà)的,只要符合條件就畫(huà)一個(gè)對(duì)應(yīng)的圖標(biāo)
for?(int?i?=?0;?i??size?/?2?+?1;?i++)?{?//先循環(huán)上半部分,這是行
for?(int?j?=?size?/?2?+?1;?j??i?+?1;?j--)?{//循環(huán)列,畫(huà)左上空白部分
System.out.print("1");//?每行從左往右畫(huà)“1”的個(gè)數(shù)是(size/2+1)-(i+1),比如第一行是(10/2+1)-(0+1)=5,所以第一行畫(huà)5個(gè)“1",以此類推
}
for?(int?j?=?0;?j??2?*?i?+?1;?j++)?{//則開(kāi)始畫(huà)邊緣“*”和空白,開(kāi)始地方是上面那個(gè)for循環(huán)畫(huà)完之后的位置,這里的j和上面沒(méi)有關(guān)系,這是重新從0開(kāi)始計(jì)算的
if?(j?==?0?||?j?==?2?*?i)?{//已知緊跟著的第一個(gè)就是“*”,所以j==0時(shí)畫(huà)個(gè)“*”,
System.out.print("*");//?第二個(gè)“*”的位置離第一個(gè)“*”的位置與行數(shù)的關(guān)系2*行號(hào),如第二行第二個(gè)“*”的位置離第一個(gè)“*”2*1=2位(行號(hào)從0算起)
}?else?{
System.out.print("2");//?其他不是“*”的位置用“2”填充
}
}
System.out.println("3");//最外面畫(huà)個(gè)“3”,
}
//下半部分類似
for?(int?i?=?size?/?2?+?1;?i??size;?i++)?{
for?(int?j?=?0;?j??i?-?size?/?2;?j++)?{
System.out.print("?");//?輸出菱形左下角空白
}
for?(int?j?=?0;?j??2?*?size?-?1?-?2?*?i;?j++)?{
if?(j?==?0?||?j?==?2?*?(size?-?i?-?1))?{
System.out.print("*");//?輸出菱形下半部邊緣
}?else?{
System.out.print("?");//?輸出菱形下半部空心
}
}
System.out.println("");
}
}
}
可以自己先理解理解,有問(wèn)題可以追問(wèn)
注解了以下 ,自己看看
final int count = 4; //count代表菱形的半徑
for (int i = 1; i count * 2; i++) { //循環(huán)2*count-1次,表示豎直方向上 有多少行,
for (int j = 1; j count * 2; j++) { //循環(huán)2*count-1次 表示水平方向 有多少列,
if (i = count) { //菱形的上半部分
if (j = count - i + 1 j = count + i - 1) {
//為什么是在此區(qū)間,數(shù)學(xué)上就是 i,與j 的關(guān)系,當(dāng)i=1是 只能是最中間一個(gè)*號(hào),i 每加1 ,*號(hào)范圍左右各加1。 你把菱形中間的對(duì)稱軸要想象出來(lái),對(duì)稱軸就是j=count 的哪條豎直線
System.out.print("*"); //水平方向上 在此區(qū)間都輸出*
} else {
System.out.print(" ");
}
} else { //菱形的下半部分
if (j = i - count + 1 j = 3 * count - i - 1) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
}