#java #for-loop #nested-loops
#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();
}
}
Комментарии:
1. почему бы не использовать отладчик и не пройти через него?
2. Выполните отладку и переходите построчно. Тогда вы получите то, что происходит
3. Изложите алгоритм на бумаге. На этом этапе обучения вы должны понимать инструкции for loops и print по отдельности
4. возьмите бумагу и ручку, ведите таблицу переменных и просматривайте код, чтобы увидеть поток управления, изменяющий значения переменных
5. ваше имя пользователя имеет больше смысла, чем ваш вопрос: p просто шучу
Ответ №1:
Печать чего-либо или всего через цикл — это просто понимание процесса выполнения. Кроме того, в вашем коде, если вы начнете просматривать поток построчно, вы узнаете, как именно это работает.
Если вы понимаете, как это работает, вы сможете распечатать любой шаблон, но основы должны быть понятны. Попробуйте печатать значения переменных i, j и k после каждой итерации. Посмотрите значения, которые меняются после каждого цикла выполнения, а затем посмотрите логику, которую вы применили.
Ваш вопрос несколько очень широк по объему, и на него нельзя ответить точно, если не сузить его. Я бы посоветовал запустить это построчно и посмотреть результат, попробуйте внести дополнительные изменения, даже если это не имеет никакого смысла, у вас будет хорошее понимание цикла даже для всех ваших будущих задач. И если, попробовав себя, вы придете к какой-либо проблеме, поделитесь здесь, люди готовы их решить. 🙂
Надеюсь, это поможет.
Ответ №2:
Сначала вы должны иметь полное представление о циклах, вложенных циклах, затем вы переходите к разработке шаблонов.
1) Сначала запустите циклы в твердой форме, например, на странице Register / on, чтобы понять циклы.
2) Используйте debugger для определения хода выполнения цикла.
Ответ №3:
Если вы думаете об этом с точки зрения математики, циклы — это просто функции.
Единственным циклом 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! Этот процесс продолжается до тех пор, пока я не достигну порогового значения <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, и цикл завершится. Надеюсь, это поможет
Ответ №4:
Во-первых, поскольку i = 0 amp; 0<5 истинно, вы вводите первый (внешний) цикл for.
Помните, что i = 0.
Тогда j = 0; но 0 < i = 0 равно false, поэтому вы не входите во второй цикл.
Для третьего цикла k = 0 amp; 0<=0 имеет значение true . Итак, вы входите в цикл и выполняете оператор print, то есть печатаете звезду.
k , это увеличит k на 1 и проверит логическое значение; Вы спрашиваете себя, равно ли 1 <= 0; очевидно, нет; поэтому вы выходите из цикла for и затем переходите к оператору println, который приведет вас к следующей строке.
И затем вы возвращаетесь к внешнему циклу.
Ответ №5:
// этот код печатает диагональный шаблон, если матрица равна 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(" ");
}
}
}
}