Я попытался преобразовать код из цикла while в цикл For, но Im не получил желаемый результат.Преобразование всего кода из цикла while в цикл для Java в Java
Для кода Loop является:
public static void diamond1() {
System.out.println("Diamond Height: " + DIAMOND_SIZE);
System.out.println("Output for: For Loop");
int noOfRows = DIAMOND_SIZE;
int md=noOfRows%2;
//Getting midRow of the diamond
int midRow = (noOfRows)/2;
//Printing upper half of the diamond
for (int i = noOfRows; i >= 0;i=(i-2))
{
//Printing i spaces at the beginning of each row
for (int j = 1; j <= i-md; j++) {
System.out.print(" ");
}
//Printing j *'s at the end of each row
for (int j = 1; j <= (noOfRows+1-md); j++) {
if (i-md==0 && j==midRow+1) {
System.out.print("o ");
}
else {
System.out.print("* ");
}
}
System.out.println();
}
//Printing lower half of the diamond
for (int i = 2; i <= noOfRows;i=(i+2)) {
//Printing i spaces at the beginning of each row
for (int j = 1; j <= i; j++) {
System.out.print(" ");
}
//Printing j *'s at the end of each row
for (int j=0; j <= (noOfRows); j++) {
System.out.print("* ");
}
System.out.println();
}
}
Выход, который я получил:
* * *
* o *
* * * *
Вывод, что нужно:
*
* o *
*
Оригинал в то время как цикл у меня был было получено:
public static void diamond2() {
System.out.println("");
System.out.println("Output for: While loop");
int noOfRows = DIAMOND_SIZE;
int md=noOfRows%2;
//Getting midRow of the diamond
int midRow = (noOfRows)/2;
int i = noOfRows;
while(i >= 0){
//Printing i spaces at the beginning of each row
int j = 1;
while(j <= i-md){
if(i-md==0)break;
System.out.print(" ");
j++;
}
//Printing j *'s at the end of each row
while(j <= (noOfRows+1-md)){
if (i-md==0 && j==midRow+1) {
System.out.print("o ");
}
else {
System.out.print("* ");
}
j++;
}
System.out.println();
i=(i-2);
}
i = 2;
while(i <= noOfRows){
//Printing i spaces at the beginning of each row
int j = 1;
while(j <= i){
System.out.print(" ");
j++;
}
//Printing j *'s at the end of each row
while(j <= (noOfRows+1-md)){
System.out.print("* ");
j++;
}
System.out.println();
i=(i+2);
}
}
Может кто-нибудь помочь мне выяснить, что я делаю неправильно здесь?
Ваш отладчик поможет вам здесь. –
@ AndyTurner Я знаю, это может показаться глупым, но как я отлаживаю это? – donk2017
Какова была ваша петля while? –