java打印菱形及直角和等腰三角形的方法
本文講述如何用Java打印一個菱形,以及打印直角和等腰三角形的方法, 本文教程比較詳細,如果想要直接學(xué)習(xí)菱形可以直接翻到本文最下方?。?!
左下角三角形
(這里說的方位均是對應(yīng)矩形來說)
int a = 5;
for (int i = 0; i < a; i++) {
for (int j = 0; j < i; j++) {
System.out.print("*");
}
System.out.println();
}這段代碼將輸出如下圖形,,其中i<?控制輸出行數(shù),j<?控制輸出列數(shù)
這里j<i,且關(guān)于j的循環(huán)嵌套在關(guān)于i的遞增循環(huán)里,所以列數(shù)(也是每行的數(shù)量)會隨著行數(shù)的增加而增加,最終形成一個左下角方位的三角形

(這里輸出*號語句要用System.out.print();避免換行。最下面的 System.out.println()是起換行作用; )
右下角三角形
int a = 5;
for (int i = 0; i <= a; i++) {
for (int k = a; k > i; k--) {
System.out.print(" ");
}
for (int j = 0; j < i; j++) {
System.out.print("*");
}
System.out.println();
}這段代碼將輸出如下圖形,這里增加了一個關(guān)于k的for循環(huán),它的作用是在原本左下角的基礎(chǔ)上在每行輸出的*號之前增加空格,注意這里輸出空格同樣使用System.out.print();避免換行,因為k的循環(huán)是k--的遞減循環(huán),所以從i開始遞減輸出空格,就會形成一盒右下角的三角形。

正等腰三角形
int a = 5;
for (int i = 0; i <= a; i++) {
for (int k = a; k > i; k--) {
System.out.print(" ");
}
for (int j = 0; j < 2*i-1; j++) {
System.out.print("*");
}
System.out.println();
}這段代碼將輸出如下結(jié)果,觀察下面的實際輸出圖片就會發(fā)現(xiàn)其實很好理解,只是將原來的右下角三角形輸出的*號改為了1、3、5、7、9的奇數(shù)排列,我們可以利用規(guī)律,將控制每行數(shù)量的j改為2*i-1實現(xiàn),同理利用不同公式可以控制每行的數(shù)量。

實際全部輸出為

這里我們已經(jīng)解決了菱形的上半部分
左上角三角形
int a =5 ;
for (int i = 0; i < a; i++) {
for (int j = a; j > i; j--) {
System.out.print("*");
}
System.out.println();
}這段代碼將輸出如下結(jié)果,左上角就是倒過來打印左下角三角形,所以只需要讓每行的*號遞減即可,所以只用改變關(guān)于j的循環(huán)就可,讓其初始值為最大,并將迭代器改為j--就可以實現(xiàn)此效果

右上角三角形
int len =5 ;
for (int i = 0; i < len; i++) {
for (int k = 0; k < i; k++) {
System.out.print(" ");
}
for (int j = len; j > i; j--) {
System.out.print("*");
}
System.out.println();
}這段代碼講輸出如下結(jié)果,這與左下三角和右下三角的本質(zhì)相似,就是在輸出的*號前面增加空格,不過這里是倒敘輸出,那么相應(yīng)輸出空格的程序也要反過來。

倒等腰三角形
int a =5 ;
for (int i = a; i > 0; i--) {
for (int k = a; k >= i; k--) {
System.out.print(" ");
}
for (int j = 2*i-1; j > 0; j--) {
System.out.print("*");
}
System.out.println();
}這段代碼將輸出如下結(jié)果,對比全部輸出內(nèi)容,可以看到原理與正等腰三角類似,只是顛倒輸出順序,就不過多贅述這個問題了。


菱形
實際上菱形就是一正一反兩個三角形拼接而成,拆解過后,我們就知道可以通過輸出正反等腰三角形就可以組成菱形。
int a = 5;
//正等腰三角形
for (int i = 0; i < a; i++) {
for (int l = a; l > i; l--) {
System.out.print(" ");
}
for (int j = 0; j < 2*i-1; j++) {
System.out.print("*");
}
System.out.println();
}
//倒等腰三角形
for (int i = a-1; i > 0; i--) {
for (int k = a; k >= i; k--) {
System.out.print(" ");
}
for (int j = 2*i-3; j > 0; j--) {
System.out.print("*");
}
System.out.println();
}這段代碼將輸出如下結(jié)果,兩個三角形輸出的原理上面有詳細解析,這里講需要注意的地方,
輸出下面的三角形的時候要將行數(shù)(即i的初始值)減去1,因為菱形中間的轉(zhuǎn)折線要比上下兩邊都長,我們已經(jīng)使用了上面的最長邊,下面的三角形就應(yīng)該省略,減去1后在開始(也可以讓上面減少一次輸出)。
2.因為行數(shù)減1了,所以對應(yīng)的輸出數(shù)量也要減掉,因為每行是增加2個,所以每一行輸出的數(shù)量都應(yīng)該額外減去2,所以j的初始值應(yīng)該是2i-3;

這就是利用java輸出一個菱形的方法,希望對大家有所幫助!??!
總結(jié)
到此這篇關(guān)于java打印菱形及直角和等腰三角形的文章就介紹到這了,更多相關(guān)java打印菱形內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
http協(xié)議進階之Transfer-Encoding和HttpCore實現(xiàn)詳解
這篇文章主要給大家介紹了http協(xié)議之Transfer-Encoding和HttpCore實現(xiàn)的相關(guān)資料,文中介紹的非常詳細,相信對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。2017-04-04
mybatis mapper互相引用resultMap啟動出錯的解決
這篇文章主要介紹了mybatis mapper互相引用resultMap啟動出錯的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08
java:?無效的目標(biāo)發(fā)行版:?20問題解決辦法
這篇文章主要給大家介紹了關(guān)于java:?無效的目標(biāo)發(fā)行版:?20問題的解決辦法,出現(xiàn)這個問題大多數(shù)是因為自己安裝的jdk版本和你在運行項目時的所選的jdk版本不一致所導(dǎo)致的,需要的朋友可以參考下2024-03-03
使用Java將字節(jié)數(shù)組轉(zhuǎn)成16進制形式的代碼實現(xiàn)
在很多場景下,需要進行分析字節(jié)數(shù)據(jù),但是我們存起來的字節(jié)數(shù)據(jù)一般都是二進制的,這時候就需要我們將其轉(zhuǎn)成16進制的方式方便分析,本文主要介紹如何使用Java將字節(jié)數(shù)組格式化成16進制的格式并輸出,需要的朋友可以參考下2024-05-05
mybatis3中@SelectProvider傳遞參數(shù)方式
這篇文章主要介紹了mybatis3中@SelectProvider傳遞參數(shù)方式。具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08
SpringBoot整合Spring Data Elasticsearch的過程詳解
這篇文章主要介紹了SpringBoot整合Spring Data Elasticsearch的過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-09-09
關(guān)于SpringBoot中Ajax跨域以及Cookie無法獲取丟失問題
這篇文章主要介紹了關(guān)于SpringBoot中Ajax跨域以及Cookie無法獲取丟失問題,本文具有參考意義,遇到相同或者類似問題的小伙伴希望可以從中找到靈感2023-03-03
Scala數(shù)據(jù)庫連接池的簡單實現(xiàn)
本文主要介紹了Scala數(shù)據(jù)庫連接池的簡單實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02
MyBatis中${}?和?#{}?有什么區(qū)別小結(jié)
${}?和?#{}?都是?MyBatis?中用來替換參數(shù)的,它們都可以將用戶傳遞過來的參數(shù),替換到?MyBatis?最終生成的?SQL?中,但它們區(qū)別卻是很大的,今天通過本文介紹下MyBatis中${}?和?#{}?有什么區(qū)別,感興趣的朋友跟隨小編一起看看吧2022-11-11

