集册 Java实例教程 添加到数组w,a乘以v,其中a是标量。

添加到数组w,a乘以v,其中a是标量。

欢马劈雪     最近更新时间:2020-01-02 10:19:05

758
提示:您可在线编辑运行本教程的实例 - 运行实例,去试试!
添加到数组w,a乘以v,其中a是标量。


//package com.nowjava;
/*来自 
 N o w J a v a . c o m*/


public class Main {

    public static void main(String[] argv) throws Exception {

        double[] w = new double[] { 34.45, 35.45, 36.67, 37.78, 37.0000,

                37.1234, 67.2344, 68.34534, 69.87700 };

        double a = 2.45678;

        System.out.println(java.util.Arrays.toString(add(w, a)));

    }


    /**

     * Adds to an array w, a times v where a is a scalar.

     * Since v can be smaller then w, we must specified the position at which v will be added.

     *

     * @param a scalar.

     * @param p position.

     */

    public static double[] add(double[] w, double a, double[] v, int p) {

        if (v.length > w.length) {

            throw new IllegalArgumentException(

                    "Second array must be shorter or equal to the first one : "

                            + w.length + ", " + v.length);

        }

        double[] ans = copy(w);/*来自 NowJava.com - 时代Java*/

        for (int k = p; k < p + v.length; k++) {

            ans[k] += a * v[k - p];

        }

        return (ans);

    }


    /**

     * Adds a scalar to every element in the array.

     */

    public static double[] add(double[] w, double a) {

        double[] ans = copy(w);

        for (int k = 0; k < ans.length; k++) {

            ans[k] += a;

        }

        return (ans);

    }


    /**

     * Adds the two arrays together (componentwise).

     *

     * @throws IllegalArgumentException if the

     *                                  two arrays don't have the same length.

     */

    public static double[] add(double[] a, double[] b) {

        if (a.length != b.length) {

            throw new IllegalArgumentException(

                    "To add two arrays, they must have the same length : "

                            + a.length + ", " + b.length);

        }

        double[] ans = copy(a);

        for (int i = 0; i < a.length; i++) {

            ans[i] += b[i];

        }

        return (ans);

    }


    /**

     * Adds to an array w, a times v where a is a scalar.

     * Since v can be smaller then w, we must specified the position at which v will be added.

     *

     * @param a scalar.

     * @param p position.

     * @param w longer array.

     * @param v shorter array.

     * @throws IllegalArgumentException if the second array

     *                                  is not shorter than the first one.

     */

    public static int[] add(int[] w, double a, int[] v, int p) {

        if (v.length > w.length) {

            throw new IllegalArgumentException(

                    "Second array must be shorter or equal to the first one : "

                            + w.length + ", " + v.length);

        }

        int[] ans = copy(w);

        for (int k = p; k < p + v.length; k++) {

            ans[k] += a * v[k - p];

        }

        return (ans);

    }


    /**

     * Adds a scalar to every element in the array.

     */

    public static int[] add(int[] w, int a) {

        int[] ans = copy(w);

        for (int k = 0; k < ans.length; k++) {

            ans[k] += a;

        }

        return (ans);

    }


    /**

     * Adds the two arrays together (componentwise).

     *

     * @throws IllegalArgumentException if the

     *                                  two arrays don't have the same length.

     */

    public static int[] add(int[] a, int[] b) {

        if (a.length != b.length) {

            throw new IllegalArgumentException(

                    "To add two arrays, they must have the same length : "

                            + a.length + ", " + b.length);

        }

        int[] ans = copy(a);

        for (int i = 0; i < a.length; i++) {

            ans[i] += b[i];

        }

        return (ans);

    }


    /**

     * Returns a comma delimited string representing the value of the array.

     */

    public static String toString(double[] array) {


        StringBuffer buf = new StringBuffer(array.length);

        int i;

        for (i = 0; i < array.length - 1; i++) {

            buf.append(array[i]);

            buf.append(',');

        }

        buf.append(array[i]);

        return buf.toString();

    }


    /**

     * Returns a comma delimited string representing the value of the array.

     */

    public static String toString(double[][] array) {

        StringBuffer buf = new StringBuffer();

        for (int k = 0; k < array.length; k++) {

            buf.append(toString(array[k]));

            buf.append(System.getProperty("line.separator"));

        }

        return buf.toString();

    }


    /**

     * Returns a comma delimited string representing the value of the array.

     */

    public static String toString(int[] array) {

        StringBuffer buf = new StringBuffer(array.length);

        int i;

        for (i = 0; i < array.length - 1; i++) {

            buf.append(array[i]);

            buf.append(',');

        }

        buf.append(array[i]);

        return buf.toString();

    }


    /**

     * Returns a comma delimited string representing the value of the array.

     */

    public static String toString(int[][] array) {

        StringBuffer buf = new StringBuffer();

        for (int k = 0; k < array.length; k++) {

            buf.append(toString(array[k]));

            buf.append(System.getProperty("line.separator"));

        }

        return buf.toString();

    }


    /**

     * Returns a copy of the array.

     */

    //a call to array.clone() may also work although this is a primitive type. I haven't checked

    //it even may be faster

    public static int[] copy(int[] array) {

        int[] result;

        result = new int[array.length];

        System.arraycopy(array, 0, result, 0, array.length);

        return result;

    }


    /**

     * Returns a copy of the array.

     */

    //a call to array.clone() may also work although this is a primitive type. I haven't checked

    //it even may be faster

    public static long[] copy(long[] array) {

        long[] result;

        result = new long[array.length];

        System.arraycopy(array, 0, result, 0, array.length);

        return result;

    }


    /**

     * Returns a copy of the array.

     */

    //a call to array.clone() may also work although this is a primitive type. I haven't checked

    //it even may be faster

    public static float[] copy(float[] array) {

        float[] result;

        result = new 
展开阅读全文