Java 有没有一种方法可以改变数据元素,使我的代码在我使用构造函数启动方法时基本上从一开始就开始?

Java 有没有一种方法可以改变数据元素,使我的代码在我使用构造函数启动方法时基本上从一开始就开始?,java,methods,constructor,integer,Java,Methods,Constructor,Integer,晚上好,问题已经在标题里了 我想知道要更改什么,因此我的程序将正确计算treetrunk,为第二次运行显示正确数量的星点,并为树干执行for循环 下面您可以看到主测试类和包含所有其他元素和方法的测试类 任何帮助都将不胜感激 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in);

晚上好,问题已经在标题里了

我想知道要更改什么,因此我的程序将正确计算treetrunk,为第二次运行显示正确数量的星点,并为树干执行for循环

下面您可以看到主测试类和包含所有其他元素和方法的测试类

任何帮助都将不胜感激

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();

        while (n % 2 == 0 || n < 0) {    //Reject even numbers

            n = sc.nextInt();       //Read the input
            System.out.println("Please type in a uneven number");
        }


        /**
         * First runthrough for length 9
         */

        Triangle_new triangle = new Triangle_new(n);

        triangle.display_triangle(); //Call Triangle method

        System.out.println();
        System.out.println("Total number of stars = " + (triangle.get_stars() / 2));
        System.out.println("Total number of dots = " + (triangle.get_dots() / 2));
        System.out.println();


        Triangle_new tree = new Triangle_new(n);   //Constructor for triangle with tree trunk

        tree.display_tree();     //Call tree method


        System.out.println();


        /**
         * Second runthrough for length 11
         */

        System.out.println("Now the length will be set to 11.");
        System.out.println();


        Triangle_new triangle2 = new Triangle_new(n);

        triangle2.set_length(11);

        triangle2.display_triangle(); //Call triangle method

        System.out.println();
        System.out.println("Total number of stars = " + (triangle2.get_stars() / 2));
        System.out.println("Total number of dots = " + (triangle2.get_dots() / 2));
        System.out.println();


        Triangle_new tree2 = new Triangle_new(n);  //Constructor for triangle with tree trunk

        tree2.set_length(11);
        tree2.get_lines();

        tree2.display_tree();    //Call tree method

    }
}
import java.util.Scanner;
公共班机{
公共静态void main(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
int n=sc.nextInt();
而(n%2==0 | | n<0){//拒绝偶数
n=sc.nextInt();//读取输入
System.out.println(“请输入不均匀的数字”);
}
/**
*长度为9的第一个贯穿件
*/
三角形\新三角形=新三角形\新(n);
triangle.display_triangle();//调用triangle方法
System.out.println();
System.out.println(“星星总数=“+(triangle.get_stars()/2));
System.out.println(“点的总数=”+(triangle.get_dots()/2));
System.out.println();
三角形_newtree=新三角形_new(n);//带树干的三角形的构造函数
tree.display_tree();//调用tree方法
System.out.println();
/**
*长度为11的第二次贯穿件
*/
System.out.println(“现在长度将设置为11”);
System.out.println();
三角形\新三角形2=新三角形\新(n);
三角形2.设置长度(11);
triangle2.display_triangle();//调用triangle方法
System.out.println();
System.out.println(“星星总数=“+(triangle2.get_stars()/2));
System.out.println(“点的总数=“+(triangle2.get_dots()/2));
System.out.println();
三角形_newtree2=新三角形_new(n);//带树干的三角形的构造函数
树2.设置长度(11);
树2.获取线();
tree2.display_tree();//调用树方法
}
}
下面是包含方法和数据元素的类

public class Triangle_new {

    int stars = 1;
    int dots;
    int lines;
    int length;
    int dotsCounter;
    int starsCounter;
    int linesCounter;
    int starsnew = 1;
    private int tree_trunk;

    //Main constructor
    public Triangle_new(int n) {

        this.length = n;

        while (stars <= length) {
            linesCounter++;                     // Number of lines

            dots = (length - stars) / 2;        //Calculation of dots

            for (int i = 1; i <= dots; i++) {
                dotsCounter++;                  //Total of dots
            }             


            for (int i = 1; i <= stars; i++) {
                starsCounter++;                 //Total of stars
            }            

            for (int i = 1; i <= dots; i++) {
                dotsCounter++;
            }

            stars = stars + 2;             //Calculate stars
        }
        stars = starsCounter;
        dots  = dotsCounter;
        lines = linesCounter;
    }

    //Triangle method
    public void display_triangle() {
        while (starsnew <= length) {
            linesCounter++;
            dots = (length - starsnew) / 2;

            for (int i = 1; i <= dots; i++) {
                dotsCounter++;
                System.out.print(".");
            }

            for (int i = 1; i <= starsnew; i++) {
                starsCounter++;
                System.out.print("*");
            }

            for (int i = 1; i <= dots; i++) {
                dotsCounter++;
                System.out.print(".");
            }

            starsnew = starsnew + 2;
            System.out.println();
        }
    }

    public void set_length(int l) {
        this.length = l;
    }

    //Print out triangle with tree trunk
    public void display_tree() {

        int dotstreetrunk;

        dotstreetrunk = (length - stars) / 2;

        display_triangle();


        tree_trunk = (lines / 2);


        for (int i = 1; i <= dotstreetrunk; i++) {
            dotsCounter++;
            System.out.print(".");
        }

        for (int i = 1; i <= tree_trunk; i++) {
            starsCounter++;
            System.out.println("*");

        }

        for (int i = 1; i <= dotstreetrunk; i++) {
            dotsCounter++;
            System.out.print(".");
        }


    }

    public int get_length() {
        return length;
    }

    public int get_lines() {
        return linesCounter;  //Number of lines
    }

    public int get_stars() {
        return starsCounter;  // Number of stars
    }

    public int get_dots() {
        return dotsCounter;   //Number of dots
    }

}
公共类三角形\u新建{
int星=1;
整数点;
内线;
整数长度;
int网络中心;
国际星际中心;
国际线路中心;
int starsnew=1;
私人int树干;
//主建造师
公共三角洲(国际北){
这个长度=n;

而(stars您应该将代码从构造函数移出到set_length()中)方法,然后从构造函数中调用它。这样,您就可以重用代码了。当然,从这里开始,您的计算似乎被放置在构造函数中,并且似乎希望每次调用setLength方法时都能运行计算。如果您将代码放置在setLength中,那么您可以在代码中实现这一点,一个通过在构造函数中调用它,你就完成了这个练习。我理解。你介意告诉我如何整合它吗?这让我有点恼火,因为我使用了两个变量来操作长度,在开始时使用“n”,在set_length方法中使用“l”。所以我不确定如何正确地操作。