«Пока-петля» не работает правильно - PullRequest
0 голосов
/ 09 декабря 2011

Я изучаю Java, пользуюсь книгой «Java как программировать».Я решаю упражнения.В этом конкретном упражнении я должен создать программу, которая читает целое число от пользователя.Затем программа должна отобразить квадрат звездочек (*), соответствующий целому числу, прочитанному пользователем.Пользователь F.eks вводит целое число 3, программа должна отобразить:

***
***
***

Я пытаюсь вложить оператор while внутри другого, первый повторяет звездочки в одной строке, другойповторите это правильное количество раз.К сожалению, я получаю программу для отображения только одной строки.Может кто-нибудь сказать мне, что я делаю не так, пожалуйста?Код выглядит следующим образом:

import java.util.Scanner;
public class Oppgave618 
{

    public static void main(String[] args) 
    {
    int numberOfSquares;
    Scanner input = new Scanner(System.in);
    System.out.print("Type number of asterixes to make the square: ");
    numberOfSquares = input.nextInt();

        int count1 = 1;
    int count2 = 1;

    while (count2 <= numberOfSquares)

        {
        while (count1 <= numberOfSquares)
            {
            System.out.print("*");
            count1++;
            }
        System.out.println();
        count2++;
        }

    }

}

Ответы [ 3 ]

5 голосов
/ 09 декабря 2011

Вы должны сбросить count1 обратно в каждой итерации внешнего цикла

public static void main(String[] args)  {
    int numberOfSquares;
    Scanner input = new Scanner(System.in);
    System.out.print("Type number of asterixes to make the square: ");
    numberOfSquares = input.nextInt();
             //omitted declaration of count1 here
    int count2 = 1;
    while (count2 <= numberOfSquares) {
        int count1 = 1; //declaring and resetting count1 here
        while (count1 <= numberOfSquares) {
            System.out.print("*");
            count1++;
        }
        System.out.println();
        count2++;
    }
}
1 голос
/ 09 декабря 2011

Если для упражнения не нужны циклы while, вам действительно следует использовать циклы for.Они фактически предотвратят появление таких ошибок и потребуют меньше кода.Кроме того, в большинстве языков программирования идиоматично начинать отсчет с нуля и использовать < вместо <= для завершения цикла:

for (int count2 = 0; count2 < numberOfSquares; ++count2)
{
    for (int count1 = 0; count1 < numberOfSquares; ++count1)
        System.out.print("*");
    System.out.println();
}
1 голос
/ 09 декабря 2011

count1 необходимо сбрасывать каждый раз, когда вы переходите к следующей строке, например,

while (count2 <= numberOfSquares)
{
    while (count1 <= numberOfSquares)
    {
        System.out.print("*");
        count1++;
    }
    System.out.println();
    count1 = 1; //set count1 back to 1
    count2++;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...