随机数组:获取最小值、最大值和平均值
Random Array: Getting min, max, and average
我正在写一个 class,它应该用随机整数填充一个数组。数组的大小由用户通过扫描器输入给出 class。然后,您应该包括用于获取平均值、最小值和最大值的方法,以及用于显示随机整数的 toString 方法。我已经写出 class 但无法在我的驱动程序中使用这些方法。我使用 array.getMax() 并且它 returns a cannot be applied to given types 抛出。而我的字符串只有 returns 数组地址。谁能告诉我哪里出错了?
Class:
import java.util.*;
public class RandomArray {
public int size;
private static Random gen = new Random();
public RandomArray()
{
Scanner scan = new Scanner(System.in);
System.out.print("Enter the size of the array: ");
size = scan.nextInt();
int[] array = new int[size];
for (int i = 0; i < array.length; i++)
array[i] = gen.nextInt(50) + 1;
}
public int getMax(int[] array)
{
int max = 0;
for (int i = 0; i < array.length; i++)
if (array[i] > max) {
max = array[i];
}
return max;
}
public int getMin(int[] array)
{
int min = 52;
for (int i = 0; i < array.length; i++)
if (array[i] < min) {
min = array[i];
}
return min;
}
public double getAvg(int[] array)
{
double total = (double) size;
double avg, sumOf;
int sum = 0;
for (int i : array)
sum += i;
sumOf = (double) sum;
avg = sumOf / total;
return avg;
}
public String toString(int[] array)
{
String result = "";
for (int i = 0; i < array.length; i++)
result = result + array[i];
return result;
}
}
这里是驱动程序(我也不知道调用后如何平均显示):
import java.util.*;
public class RandomArrayDriver {
public static void main(String[] args)
{
int value;
RandomArray one = new RandomArray();
one.getAvg();
one.getMax();
one.getMin();
System.out.print("The contents are: " + one.toString());
}
}
您好,如果您的数组是原始数据类型,那么您不必编写自定义代码来查找最大值和最小值,您可以使用 array.sort 函数对数组进行排序。排序后,您的第一个索引将是最小值,数组的最后一个索引应具有最大值。如下所示:
int[] nums= {1, 4, 2, 5, 8};
Arrays.sort(nums);
System.out.println("Minimum = " + nums[0]);
System.out.println("Maximum = " + nums[nums.length-1]);
根据您发布的代码,它不应该 运行 处于这种状态。当我 运行 它时,我得到的异常与你报告的不同,但是尽管如此,这里有一些提示可以得到它 运行ning:
RandomArray
的构造函数正在将 array
初始化为局部变量,一旦完成,该引用就会丢失。您最有可能想要的是使 array
成为实例变量。然后,您的其他 class 方法可以在进行计算时访问该数组。
在您的 RandomArrayDriver
中,您在 one
实例上调用 class 方法而不传递参数,但是您在 RandomArray
指定一个 int[]
参数。如果您根据上述观点重构您的代码,您应该能够删除这些并且您的驱动程序将 运行 正确。
希望这足以让您入门。这些更改应该至少使程序 运行ning 和之后的其他修复应该是输出的明显格式(提示:toString
将在当前状态下输出一些奇怪的东西)。
我正在写一个 class,它应该用随机整数填充一个数组。数组的大小由用户通过扫描器输入给出 class。然后,您应该包括用于获取平均值、最小值和最大值的方法,以及用于显示随机整数的 toString 方法。我已经写出 class 但无法在我的驱动程序中使用这些方法。我使用 array.getMax() 并且它 returns a cannot be applied to given types 抛出。而我的字符串只有 returns 数组地址。谁能告诉我哪里出错了?
Class:
import java.util.*;
public class RandomArray {
public int size;
private static Random gen = new Random();
public RandomArray()
{
Scanner scan = new Scanner(System.in);
System.out.print("Enter the size of the array: ");
size = scan.nextInt();
int[] array = new int[size];
for (int i = 0; i < array.length; i++)
array[i] = gen.nextInt(50) + 1;
}
public int getMax(int[] array)
{
int max = 0;
for (int i = 0; i < array.length; i++)
if (array[i] > max) {
max = array[i];
}
return max;
}
public int getMin(int[] array)
{
int min = 52;
for (int i = 0; i < array.length; i++)
if (array[i] < min) {
min = array[i];
}
return min;
}
public double getAvg(int[] array)
{
double total = (double) size;
double avg, sumOf;
int sum = 0;
for (int i : array)
sum += i;
sumOf = (double) sum;
avg = sumOf / total;
return avg;
}
public String toString(int[] array)
{
String result = "";
for (int i = 0; i < array.length; i++)
result = result + array[i];
return result;
}
}
这里是驱动程序(我也不知道调用后如何平均显示):
import java.util.*;
public class RandomArrayDriver {
public static void main(String[] args)
{
int value;
RandomArray one = new RandomArray();
one.getAvg();
one.getMax();
one.getMin();
System.out.print("The contents are: " + one.toString());
}
}
您好,如果您的数组是原始数据类型,那么您不必编写自定义代码来查找最大值和最小值,您可以使用 array.sort 函数对数组进行排序。排序后,您的第一个索引将是最小值,数组的最后一个索引应具有最大值。如下所示:
int[] nums= {1, 4, 2, 5, 8};
Arrays.sort(nums);
System.out.println("Minimum = " + nums[0]);
System.out.println("Maximum = " + nums[nums.length-1]);
根据您发布的代码,它不应该 运行 处于这种状态。当我 运行 它时,我得到的异常与你报告的不同,但是尽管如此,这里有一些提示可以得到它 运行ning:
RandomArray
的构造函数正在将array
初始化为局部变量,一旦完成,该引用就会丢失。您最有可能想要的是使array
成为实例变量。然后,您的其他 class 方法可以在进行计算时访问该数组。在您的
RandomArrayDriver
中,您在one
实例上调用 class 方法而不传递参数,但是您在RandomArray
指定一个int[]
参数。如果您根据上述观点重构您的代码,您应该能够删除这些并且您的驱动程序将 运行 正确。
希望这足以让您入门。这些更改应该至少使程序 运行ning 和之后的其他修复应该是输出的明显格式(提示:toString
将在当前状态下输出一些奇怪的东西)。