问题描述
我是 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];
}