java 构造函数的数组固定元素
java array fixed element for constructor
我正在 class 写我的第一个 java。
我用一个必须用 3 个元素声明的 int[] 做了一个 class。
public abstract class MyClass {
private String name;
private int[] myValues = new int[2];
现在我的问题是:
- 确保用户必须插入每个成员的最佳方法是什么?
那么..
构造函数是最好的方法,所以我在构造函数中明确要求每个元素:
public MyClass(String nam, int val0, int val1, int val2){
int[] values = new int[]{val0, val1, val2};
setMyValues(values);
}
private void setMyValues(int[] vals){
this.myValues = vals;
}
这是个好习惯?似乎很复杂,而不是给出一个简单的数组:
public void MyClass(int[] vals)..
但是通过这种方式我无法确定 elements.I 的数量应该创建自定义异常还是 if(vals.length != 2) cicle..
我还有一些疑问:
声明 myValues = new int[2] 是有用的还是只写 int[] myValues 是一样的? (为什么声明内部状态的元素数量?)
最好从构造函数接收参数或将向量传递给 setter (setMyValues(int[] vals)) 并检查 setter?[=14= 中的数组]
谢谢你的每一个建议。
- 你可以有一个重载的构造函数,其中一个包含三个整数
值和一个数组。在第一个建立一个数组和
将它传递给数组构造函数,在第二个构造函数中调用 setter
并评估长度,如果长于三个则抛出
异常。
- 您正在分配一个从未使用过的对象,它会浪费 space 并且会在分配新数组后由 GC 回收。我不会分配给那个 属性.
- 这取决于你的方法。您可以针对第一点添加第三个默认构造函数,然后使用 setter 方法设置数组。
希望对您有所帮助。
public class MyClass {
private String name;
private int[] myvalues = new int[3];
//you want the array to hold 3 elements so the size should be 3
//constructor
public MyClass(String name) {
this.name = name; // each instance is defined by a name
System.out.println("enter 3 values, each on a line");
//3
//4
//5
for(int i = 0; i < 3 ;i++) {// loop restricts the user to 3 elements
Scanner console = new Scanner(System.in); // import Scanner
this.myvalues[i] = console.nextInt();
}
//myvalues = {3,4,5}
}
public static void main(String[] args) {
MyClass C = new MyClass("Points of triangle");
}
}
您需要声明数组的大小以避免空指针异常。
这样你就可以声明不同的对象,每个对象都包含来自用户的数组元素
注意
如果您希望用户在同一行输入它们
System.out.println("enter 3 values on a line separated by space");
//3 4 5
Scanner console = new Scanner(System.in); // import Scanner
for (int i = 0; i <3 ; i++) {
this.myvalues[i] = console.nextInt();
}
}
//myvalues = {3,4,5}
我正在 class 写我的第一个 java。
我用一个必须用 3 个元素声明的 int[] 做了一个 class。
public abstract class MyClass {
private String name;
private int[] myValues = new int[2];
现在我的问题是:
- 确保用户必须插入每个成员的最佳方法是什么?
那么.. 构造函数是最好的方法,所以我在构造函数中明确要求每个元素:
public MyClass(String nam, int val0, int val1, int val2){
int[] values = new int[]{val0, val1, val2};
setMyValues(values);
}
private void setMyValues(int[] vals){
this.myValues = vals;
}
这是个好习惯?似乎很复杂,而不是给出一个简单的数组:
public void MyClass(int[] vals)..
但是通过这种方式我无法确定 elements.I 的数量应该创建自定义异常还是 if(vals.length != 2) cicle..
我还有一些疑问:
声明 myValues = new int[2] 是有用的还是只写 int[] myValues 是一样的? (为什么声明内部状态的元素数量?)
最好从构造函数接收参数或将向量传递给 setter (setMyValues(int[] vals)) 并检查 setter?[=14= 中的数组]
谢谢你的每一个建议。
- 你可以有一个重载的构造函数,其中一个包含三个整数 值和一个数组。在第一个建立一个数组和 将它传递给数组构造函数,在第二个构造函数中调用 setter 并评估长度,如果长于三个则抛出 异常。
- 您正在分配一个从未使用过的对象,它会浪费 space 并且会在分配新数组后由 GC 回收。我不会分配给那个 属性.
- 这取决于你的方法。您可以针对第一点添加第三个默认构造函数,然后使用 setter 方法设置数组。
希望对您有所帮助。
public class MyClass {
private String name;
private int[] myvalues = new int[3];
//you want the array to hold 3 elements so the size should be 3
//constructor
public MyClass(String name) {
this.name = name; // each instance is defined by a name
System.out.println("enter 3 values, each on a line");
//3
//4
//5
for(int i = 0; i < 3 ;i++) {// loop restricts the user to 3 elements
Scanner console = new Scanner(System.in); // import Scanner
this.myvalues[i] = console.nextInt();
}
//myvalues = {3,4,5}
}
public static void main(String[] args) {
MyClass C = new MyClass("Points of triangle");
}
}
您需要声明数组的大小以避免空指针异常。 这样你就可以声明不同的对象,每个对象都包含来自用户的数组元素
注意 如果您希望用户在同一行输入它们
System.out.println("enter 3 values on a line separated by space");
//3 4 5
Scanner console = new Scanner(System.in); // import Scanner
for (int i = 0; i <3 ; i++) {
this.myvalues[i] = console.nextInt();
}
}
//myvalues = {3,4,5}