java - 我如何初始化另一个类的数组?
问题描述
我正在尝试根据用户输入初始化一个数组,以便它可以是任何自定义大小。默认情况下,我已将所有 0.0 值的数组初始化为 10,但是当我尝试调用初始化数组的方法时,什么也没有发生,并且数组中的大小或值都不会改变。
班级编号:
public class Numbers {
private Float [] numbers;
private int default_size = 10;
public Numbers() {
/// write code here to intialize a "default" array since this is the default constructor
numbers = new Float[default_size];
for(int i = 0; i < default_size; i++)
numbers [i] = (float) 0.0;
}
public Numbers (int size) {
/// write code here to initialize an "initial" array given the parameter size as this is an initial constructor
numbers = new Float[size];
}
public void initValuesInArray() {
/// write code here to intialize the values in the array
Scanner scan = new Scanner(System.in);
for (int i = 0; i < numbers.length; i++) {
System.out.println("Enter Value : ");
numbers[i] = scan.nextFloat();
}
}
public String toString() {
// write code to return the values in the array in a list format - one value per line
for (int i = 0; i < numbers.length; i++)
System.out.println(numbers[i]);
return " ";
}
public float calcAverage() {
// write code to return the average of the values in the array
double sum = 0.0;
for (int i = 0; i < numbers.length; i++)
sum += numbers[i];
double average = sum / numbers.length;
System.out.println(average);
return (float) average;
}
}
主类:
public class Main {
public static void main (String [] args) {
// write the code here to implement the menu as specified in Lab 1
boolean menuLoop = true;
while(true) {
System.out.println("Enter 1 to initialize a default array");
System.out.println("Enter 2 to initialize an array of input size");
System.out.println("Enter 3 fill array with values");
System.out.println("Enter 4 display values in array");
System.out.println("Enter 5 to display average of the values in the array");
System.out.println("6 to quit\n");
Numbers obj = new Numbers();
Scanner scan = new Scanner(System.in);
int i = scan.nextInt();
switch (i) {
case 1:
obj = new Numbers ();
break;
case 2:
System.out.println("Enter the new size of array: ");
int x = scan.nextInt();
Numbers [] numbers = new Numbers[x];
break;
case 3:
System.out.println("Enter the float numbers as values in the array: ");
obj.initValuesInArray();
break;
case 4:
obj.toString();
break;
case 5:
obj.calcAverage();
break;
case 6:
System.exit(0);
break;
default :
System.out.println("Invalid Entry...");
break;
}
}
}
}
它需要能够根据用户输入更改数组的大小,然后用户可以将值输入到数组中。
编辑:
我想我终于在这里找到了问题,那就是当我在 switch 语句中使用 break 时,它会将数组初始化为默认值,即 10,所有 0.0 值。虽然我不确定如果选择的选项是 2,如何使数组保持输入值
解决方案
您没有使用public Numbers (int size)
在类中创建的构造函数Numbers
。此外,您正在创建一个名为 的新变量numbers
,而不是分配本地字段obj
。这个:
Numbers [] numbers = new Numbers[x];
应该
obj = new Numbers(x);
推荐阅读
- php - 在数组中使用对象的属性
- reactjs - 将数据从 CLASS 组件传递到 FUNCTIONNAL 组件 REACT
- ffmpeg - 如何/在何处放置 FFMPEG `-legacy_icecast 1` 选项以仅影响两个 Icecast 输出之一?(使用 tee muxer 选项)
- html - 如何在 HTML 中拆分文本并左右对齐?
- jquery - 跨表单集中创建的表单工作的 JQuery 函数
- kotlin - 如何在 Kotlin 中将属性委托给 JPA 实体
- android - 来自本机反应的 Intent.ACTION_SEND
- machine-learning - 我的 sklearn 管道是否也缩放我的因变量 y?
- python - OpenCV 没有检测到我的黑色背景矩形
- google-compute-engine - 你如何在 GCP 中设置默认图像?