[英]Printing Simple Patterns in Java
有人能解釋一下用 Java 打印簡單模式背后的基礎知識嗎?
我舉一個具體的例子。
我只是希望有人澄清每條線路在做什么,以便我更好地了解這是如何工作的。 任何其他解釋的示例(逐行)也將不勝感激!
public static void drawPyramidPattern() {
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5 - i; j++) {
System.out.print(" ");
}
for (int k = 0; k <= i; k++) {
System.out.print("* ");
}
System.out.println();
}
}
通過循環打印任何或所有內容只是為了理解執行流程。 在你的代碼中,如果你開始一行一行地觀察流程,你就會知道它是如何工作的。
如果您了解它的工作原理,您將能夠打印任何圖案,但基礎知識應該很清楚。 嘗試在每次迭代后打印變量 i、j 和 k 值。 查看在每個執行周期后如何更改的值,然后查看您應用的邏輯。
您的問題范圍有點廣泛,除非縮小范圍,否則無法准確回答。 我建議一行一行地運行並觀察輸出,即使沒有任何意義也嘗試更多更改,即使對於未來的所有任務,您也會對循環有很好的理解。 如果在嘗試自己之后遇到任何問題,請在此處分享,人們已准備好解決它們。 :)
希望這可以幫助。
首先,您必須完全了解循環、嵌套循環,然后才能進行模式設計。
1)首先以硬形式運行循環,如在注冊/頁面上理解循環。
2) 使用調試器識別循環進度。
如果從數學的角度考慮,循環只是函數。
單個 for 循環就是 x。
例子
for (int i = 0; i < 5; i++) {
System.out.println("This is function x.");
}
但是,當您開始嵌套循環時,因為它具有更大的功能。 另一個 for 循環內的 for 循環將是一個函數 x^2
例如:
for (int i = 0; i < 5; i++) {
for (int j = 0; J < 5; j++){
System.out.println("This is the j loop");
}
System.out.println("This is the i loop");
}
這背后的原因是,為了完成 i 的第一次迭代,必須完成循環內的所有內容。 但是, i 循環內部有另一個循環,因此必須先完成它。 所以帶有 j 的循環必須執行直到它完成。 (在這種情況下是 5 次),太好了,現在我們可以增加 i。 但是現在我們必須再次通過 j! 這個過程一直持續到 i 達到它的閾值 < 5。所以輸出看起來像這樣
Output:
This is the j loop
This is the j loop
This is the j loop
This is the j loop
This is the j loop
This is the i loop
This is the j loop
This is the j loop
....
這將一直持續到 i 達到 5,在這種情況下,它不再滿足必要的 i < 5,並且循環將結束。 希望這會有所幫助
首先,由於 i = 0 & 0<5 為真,因此您進入第一個(外部)for 循環。
記住 i = 0。
則 j = 0; 但是 0 < i = 0 是假的,所以你不要進入第二個循環。
對於第三個循環,k = 0 & 0<=0 為真。 所以你進入循環並執行打印語句,即打印一個星號。
k++,這會將 k 增加 1 並檢查布爾值; 你問自己是 1 <= 0; 顯然沒有; 所以你退出 for 循環,然后到達 println 語句,它將帶你到下一行。
然后你回到外循環。
//如果矩陣為 1 2 3 4 5 6 7 8 9 則此代碼打印對角線模式輸出為:1 4 2 7 5 3 8 6 9
import java.util.*;
class DiagonalPattern
{
public static void main(String args[])
{
Scanner sc=new Scanner(System.in);
int x[][];
int i,j,row,col,p,temp=1,last=0;
System.out.println("how many array wants to create and size of array");
row=sc.nextInt();
col=sc.nextInt();
x=new int[row][col];
System.out.println("Enter " +row*col+ " elements of array of array");
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
x[i][j]=sc.nextInt();
last=j;
}
}
for(i=0;i<row;i++)
{
System.out.println("");
int k=i;
for(j=0;j<=i;j++,k--)
{
if(j==col)
{
break;
}
else
{
System.out.print(x[k][j]);
System.out.print(" ");
}
}
}
for(p=x.length;p>0;p--,temp++)
{
System.out.println("");
i=x.length-1;
int k=i;
for(j=temp;j<=last;j++,k--)
{
System.out.print(x[k][j]);
System.out.print(" ");
}
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.