【问题标题】:how to print number of stars depending on user choose如何根据用户选择打印星数
【发布时间】:2020-03-17 14:12:53
【问题描述】:

我一直在尝试 practiceIt 问题并稍微扩展它们 - 我被卡住了。 该代码将根据需要给出尽可能多的星数,但我不知道如何让用户决定 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);
            }
        }
}

【问题讨论】:

    标签: java printing interactive


    【解决方案1】:

    按如下方式进行:

    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
    ********************************
    

    【讨论】:

    • 非常感谢。这就像一个魅力!所以要绝对确定发生了什么:首先我们在 main.js 中添加了扫描仪。然后我们在 main 的最后一行添加了 println,这个 println 从 next 方法中调用了一个字符串,并从一开始就设置了这个字符串的值。我理解正确吗?
    • 不客气。你的理解是正确的。
    【解决方案2】:

    您还应该在输入方法之前检查输入。这是一种允许不正确输入并提示用户输入正确值的方法。这样,就不需要捕获任何异常。

    
            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);
                }
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-04
      • 2016-02-23
      • 2015-04-08
      • 2020-12-16
      相关资源
      最近更新 更多