как напечатать количество звездочек в зависимости от выбора пользователя - PullRequest
1 голос
/ 17 марта 2020

Я пробовал практиковать свои проблемы и немного их расширять - и я застрял. Код будет давать столько звездочек, сколько необходимо, но я не знаю, как заставить пользователя определить значение для n.

Я попытался добавить к обоим методам (main / starString) следующие строки кода: "Вход для сканера = new.Scanner (System.in); int n = input.next ();" [также input.nextInt]

, но код пометит, что любой ввод с консоли возможен. Не говоря уже о том, что я понятия не имею, куда мне добавить вторую команду println, чтобы фактически напечатать результат из этого кода ... помогите мне, пожалуйста

import java.util.*;
public class printStars {

    public static void main(String[]args) {

        System.out.println("choose number and I wil show you 2^number stars");

    }
        public static String starString(int n) {
            if (n < 0) {
                throw new IllegalArgumentException();
            } else if (n == 0) {
                return "*";
            } else {
                return starString(n - 1) + starString(n - 1);
            }
        }
}

Ответы [ 2 ]

1 голос
/ 17 марта 2020

Сделайте это следующим образом:

import java.util.Scanner;

public class Main {

    public static void main(String args[]) {
        Scanner in = new Scanner(System.in);
        System.out.print("Choose number and I wil show you 2^number stars: ");
        System.out.println(starString(in.nextInt()));
    }

    public static String starString(int n) {
        if (n < 0) {
            throw new IllegalArgumentException();
        } else if (n == 0) {
            return "*";
        } else {
            return starString(n - 1) + starString(n - 1);
        }
    }
}

Пробный прогон:

Choose number and I wil show you 2^number stars: 5
********************************
0 голосов
/ 17 марта 2020

Вы должны также проверить ввод перед тем, как вводить метод. Вот один из подходов, который допускает неправильный ввод и заставляет пользователя ввести правильное значение. Таким образом, исключений не нужно ловить.


        Scanner in = new Scanner(System.in);
        String prompt = "Choose number (or a char to end) \nand I will show you 2^number stars: ";
        System.out.print(prompt);
        while (in.hasNextInt()) {
            int n = in.nextInt();
            if (n > 0) {
                System.out.println(starString(n));
            } else {
                System.out.print("Input must be greater than 0, try again: ");
                continue;
            }
            System.out.print(prompt);
        }
        System.out.println("Bye!");



        public static String starString(int n) {
            if (n == 0) {
                return "*";
            } else {
                return starString(n - 1) + starString(n - 1);
            }
        }
...