微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java 将字符数组长度打印为 0,即使我已经为其分配了一个长度

如何解决Java 将字符数组长度打印为 0,即使我已经为其分配了一个长度

我是 Java 的初学者,我已经坚持了三天。我有两节课。名为 Main 的类具有 main 方法并要求用户输入,而名为 DoThings 的类对用户输入进行处理。

我希望主类向用户询问一个数字。 doThings 类将获取这个数字,将其乘以 4 并将其设置为一维数组的长度。然后打印数组的长度。

public class Main {
    public static void main(String[] args) {
        
        //Create object called Exercise to perform the task
        DoThings Exercise = new DoThings();
        Scanner scanner = new Scanner(system.in);
        
        //Ask user for a number
        System.out.print("Please enter a number: ");
        
        //Number is passed to the setNumber setter method in DoThings class
        Exercise.setNumber(scanner.nextInt());
        
        //Getter method is used to pass number to the setMultiplyFour setter method in DoThings class
        Exercise.setMultiplyFour(Exercise.getNumber());
           
           //Print out the length of the array
           System.out.println(Exercise.array.length);         
    }
}

这是第二节课。

public class DoThings {

    private int number;
    private int multiplyFour;
    //Created array with the length as multiplyFour
    char[] array = new char[this.multiplyFour];

    //Setters
    public void setNumber(int number) {
        this.number = number;
    }
    public void setMultiplyFour(int number) {
        this.multiplyFour = number * 4;
    }
    
    //Getters
    public int getNumber() {
        return this.number;
    }
    public int getMultiplyFour() {
        return this.multiplyFour;
    }   
}

但是当我打印结果时,结果是 0?为什么是这样? 谢谢!!

解决方法

char[] array = new char[this.multiplyFour]; 这段代码被执行时,this.multiplyFour 的值为 0(在 Java 中整数的默认值为 0)。当您更新 this.multiplyFour 时,它的值会发生变化,但数组不会神奇地重新分配。您必须在更新 this.multiplyFour 时手动重新分配阵列。

public void setMultiplyFour(int number) {
    this.multiplyFour = number * 4;
    this.array = new char[this.multiplyFour];
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。