Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 爪哇的Hosoya三角形_Java - Fatal编程技术网

Java 爪哇的Hosoya三角形

Java 爪哇的Hosoya三角形,java,Java,目标:分别创建Hosoya三角形的递归表示 你的任务:著名数学家Haru Hosoya描述了一个三角形(见下图),它是基于斐波那契数的三角形数字排列。从用户处获取高度,并使用数组存储每行上的值。使用递归方法打印出Hosoya三角形的适当层数。不要认为输入是好的。您还应该实现try…catch块来捕获错误的输入 以下是我目前掌握的代码: public class HosoyaTri { public static void main(String[] args) { Sc

目标:分别创建Hosoya三角形的递归表示

你的任务:著名数学家Haru Hosoya描述了一个三角形(见下图),它是基于斐波那契数的三角形数字排列。从用户处获取高度,并使用数组存储每行上的值。使用递归方法打印出Hosoya三角形的适当层数。不要认为输入是好的。您还应该实现try…catch块来捕获错误的输入

以下是我目前掌握的代码:

public class HosoyaTri {

    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        boolean continueLoop = true;
        int num = s.nextInt();
        do {
            try {
                System.out.println("How many levels?");

                System.out.println(num + " levels");
                continueLoop = false;
            } catch (InputMismatchException im) {
                System.err.println("I said INTEGER, try again");
                s.nextLine();
            } catch (Exception e) {
                System.err.println("What did you do?");
            }
        } while (continueLoop);
        int triangle[][] = new int[num][num];
        for (int i = 0; i < num; i++) {
            for (int j = 0; j < num; j++) {
                triangle[i][j] = 0;
            }
        }
        for (int i = 0; i < num; i++) {
            triangle[i][0] = 1;
        }
        for (int i = 1; i < num; i++) {
            for (int j = 1; j < num; j++) {
                triangle[i][j] = triangle[i - 1][j - 1] * triangle[i - 1][j];
            }
        }
        for (int i = 0; i < num; i++) {
            for (int j = 0; j <= i; j++) {
                System.out.print(triangle[i][j] + " ");
            }
            System.out.println();
        }
    }

}
公立医院{
公共静态void main(字符串[]args){
扫描仪s=新的扫描仪(System.in);
布尔连续运算=真;
int num=s.nextInt();
做{
试一试{
System.out.println(“多少层?”);
System.out.println(num+“levels”);
continueLoop=false;
}捕获(输入不匹配异常im){
System.err.println(“我说的是整数,再试一次”);
s、 nextLine();
}捕获(例外e){
System.err.println(“你做了什么?”);
}
}while(continueLoop);
整数三角形[][]=新整数[num][num];
for(int i=0;i对于(int j=0;j一个问题是,您在输入循环之前读取了一次级别数。然后提示输入一个级别,然后打印
num
,而不给用户任何提供输入的机会!您应该解决这个问题。您还应该针对
num 1)进行测试)


我建议您在类中使用这些定义之一编写一个(递归)静态方法,用于计算三角形中一个条目的正确值(给定
n
j
作为参数)。然后,您可以消除
三角形
变量以及初始化该变量的所有代码。只需运行输出循环并替换对递归方法的调用,在该方法中,您现在可以访问
三角形
的特定元素。(如果出于某种原因需要显式构建三角形,只需通过调用递归方法初始化每个元素。顺便说一句:不需要将
triangle
的元素初始化为0;Java会在分配矩阵时自动执行此操作。)

您遇到了什么具体问题?您的程序崩溃了吗?输出不正确吗?还有其他问题吗?我可以从用户那里读取级别的数量,但实际上无法创建hosoya三角形。如果我尝试运行此程序,不会发生任何事,但不会出现错误,比如作业……我的计算机上发生了一些事情-它会打印一个三角形角度,虽然值显然不正确。注意:使用递归方法打印出Hosoya三角形的适当层数-还没有递归。我正在试图找出实际递归适合的位置。inI将对其进行处理并返回给您,谢谢您的帮助