Программа не заканчивается - PullRequest
1 голос
/ 27 марта 2020

Я делал Java MOO C, и я застрял в представлении, так как моя программа не завершает работу, хотя я получаю желаемый вывод.

Проблема говорит:

Создайте метод с именем printText, который печатает фразу «В дыре в земле жил метод» и перевод строки. Затем разверните программу так, чтобы основная программа спрашивала пользователя, сколько раз будет напечатана фраза (т.е. сколько раз будет вызван метод).

Я думаю, что проблема может быть в мое время l oop не прекращается.

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    System.out.println("How many times?");
    int n = Integer.valueOf(scanner.nextLine());
    int a = 0;
    while (true) {
        if (a < n) {
            printText();
            a++;
        }
    }
}

public static void printText() {
    System.out.println("In a hole in the ground there lived a method");
}

Ответы [ 2 ]

2 голосов
/ 27 марта 2020

Вы почти на пути, избавьтесь от внешнего l oop, пока l oop и измените if (a < n) на while(a<n)

import java.util.*;
public class Main
{
    public static void main(String[] args) {
     Scanner scanner = new Scanner(System.in);
        System.out.println("How many times?");
        int n = Integer.valueOf(scanner.nextLine());
        int a = 0;
        while(a < n) {
                printText();
                a++;


        }

    }
    public static void printText() {

        System.out.println("In a hole in the ground there lived a method");
    }
}
2 голосов
/ 27 марта 2020

Ваше a < n состояние должно быть связано с вашим l oop. Хотя if гарантирует, что printText() вызывается только n раз, это не мешает бесконечному l oop продолжаться вечно:

while (a < n) {
    printText();
    a++;
}

В качестве альтернативы, вы можете оставить свой бесконечный l oop но break когда a >= n:

while (true) {
    if (a < n) {
        printText();
        a++;
    } else {
        break;
    }
}

Но первое решение, на мой взгляд, более читабельно.

...