我有一段代码将派生一个随机数组,然后在该方法中进行各种计算。数组将返回内存,然后在main方法中我必须编写一个测试用例来显示方法的工作原理。我不明白如何编写测试用例。 该阵列是一个随机数组,设计为在1到999之间有10个随机数,以下方法将相互加倍计算均值并计算范围。 我有以下代码,由于main方法中的错误,它将无法编译。我该如何解决?
//main method test class
public static void main(String[] args) {
System.out.prntln(displayArr);
System.out.println(findMean);
System.out.pritnln(findRange);
System.out.println(doubleEveryOther);
}
//first method
public static void displayArr(int [] arr) {
//loop to generate 10 random numbers
for(int i = 0; i<10; i++) {
double math = 1+ (int) Math.random() *999;
}
//create an array of 10 generated random numbers
int [] math = new int [10];
System.out.println(math);
}
//second method
public static double findMean (int[] arr, int [] math) {
// begin sum
int sum =0;
//sum the values of the array
for (int i=0; i<math.length; i++) {
sum = 0+math[i];
//compute average
}
double avg = sum/math.length;
return avg;
}
//third method
public static int findRange (int[] arr,int [] math) {
//find the max
int max =math[0];
for (int i=1; i<math.length; i++) {
if(math[i] >max) {
max=math[i];
}
}
// find the min.
int min = math[0];
for(int j=1; j<math.length; j++) {
if(math[j]<min) {
min = math[j];
}
}
//max-min =range
int range = max-min;
return range;
}
//final method
public static void doubleEveryOtherVal(int[] arr,int [] math) {
//create a loop that only iterates for every other value
for (int i=1; i<math.length; i+=2){
//extract every other value from the array
double odd = math[i];
//compute
double twice = 2 *odd;
}
}
答案 0 :(得分:0)
public class Hello {
public static void main(String args[]) {
System.out.println("Random generated array\n-----------------------");
int[] test = displayArr();
double avg = findMean(test);
System.out.println("\nAverage " + avg);
int range = findRange(test);
System.out.println("Range " + range);
System.out.println(
"\nRandom generated array every value multiplied by 2 \n-----------------------------------------------------");
doubleEveryOtherVal(test);
}
// first method
public static int[] displayArr() {
// loop to generate 10 random numbers
int[] test = new int[10];
for (int i = 0; i < 10; i++) {
// Randomly generated doubles
int random = (int) (Math.random() * 50 + 10);
test[i] = random;
}
// outputs the randomly generated numbers
for (int d : test) {
System.out.println(d);
}
// returns the array
return test;
}
// second method
public static double findMean(int[] arr) {
// begin sum
int sum = 0;
// sum the values of the array
for (int i = 0; i < arr.length; i++) {
sum += arr[i];
// compute average
}
double avg = sum / arr.length;
return avg;
}
// third method
public static int findRange(int[] arr) {
int range = 0;
// find max
int max = arr[0];
for (int i = 0; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
// find the min.
int min = arr[0];
for (int x = 0; x < arr.length; x++) {
if (arr[x] < min) {
min = arr[x];
}
}
// max-min =range
range = max - min;
return range;
}
// final method
public static void doubleEveryOtherVal(int[] arr) {
// create a loop that only iterates for every other value
for (int i = 0; i < arr.length; i++) {
// extract every other value from the array
arr[i] = arr[i] * 2;
}
for(int doubled : arr)
{
System.out.println(doubled);
}
}
}
您使用的代码中存在许多错误。首先,我不知道你为什么在名为math的方法中使用第二个参数。另一个问题是您无法在返回void的方法上调用System.out.println()。
我还建议您对数组和任何具有int的位置使用double以获得更精确的值。
最后一种方法是我无法理解的,但我认为你的意思是它应该使数组中找到的每个值加倍(另一个原因是你应该使用double来获得更精确的值)。
这是使用Junit测试进行简单测试的方法。
import static org.junit.Assert.*;
import org.junit.Test;
public class TestHello {
@Test
public void testAssertions() {
Hello h1 = new Hello();
// testing that the array returned has a length of 10
assertTrue(h1.displayArr().length == 10);
}
}
有关JUnit测试的更多信息,请访问此链接
http://www.tutorialspoint.com/junit/junit_test_framework.htm
希望你能找到这个。