数组和输出问题

时间:2016-03-09 00:24:25

标签: java arrays loops methods call

我有一段代码将派生一个随机数组,然后在该方法中进行各种计算。数组将返回内存,然后在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; 
    }   

    }

1 个答案:

答案 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

希望你能找到这个。