Java 如何根据用户选择打印星号

Java 如何根据用户选择打印星号,java,printing,interactive,Java,Printing,Interactive,我一直在尝试解决一些实际问题,并把它们扩大一点——我被卡住了。 该代码将给出尽可能多的星结果,但我不知道如何让用户决定n的值 我尝试向这两个方法(main/starString)添加以下代码行: “扫描仪输入=新的.Scanner(System.in); int n=input.next();“[还包括input.nextInt] 但是代码会注意到允许从控制台进行任何输入。更不用说我不知道应该在哪里添加第二个println命令来实际打印此代码的结果。。。 请帮帮我 import java.uti

我一直在尝试解决一些实际问题,并把它们扩大一点——我被卡住了。 该代码将给出尽可能多的星结果,但我不知道如何让用户决定n的值

我尝试向这两个方法(main/starString)添加以下代码行: “扫描仪输入=新的.Scanner(System.in); int n=input.next();“[还包括input.nextInt]

但是代码会注意到允许从控制台进行任何输入。更不用说我不知道应该在哪里添加第二个println命令来实际打印此代码的结果。。。 请帮帮我

import java.util.*;
公共级印刷之星{
公共静态void main(字符串[]args){
System.out.println(“选择数字,我将显示2^数字星”);
}
公共静态字符串starString(int n){
if(n<0){
抛出新的IllegalArgumentException();
}else如果(n==0){
返回“*”;
}否则{
返回星串(n-1)+星串(n-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);
        }
    }
}

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


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

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

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