Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用java创建数组方法_Java_Arrays - Fatal编程技术网

用java创建数组方法

用java创建数组方法,java,arrays,Java,Arrays,这里我需要编写一个名为powArray的方法,它接受一个双数组a,并返回一个包含a平方元素的新数组。将其推广到第二个参数,并将a的元素提升到给定的幂。 我试着写它,但结果是0,有人能写下它并解释它是如何工作的,这样我以后就可以写了 public class Task { public static void main(String[] args) { } public static double powArray (double a[]){ for (

这里我需要编写一个名为powArray的方法,它接受一个双数组
a
,并返回一个包含
a
平方元素的新数组。将其推广到第二个参数,并将
a
的元素提升到给定的幂。 我试着写它,但结果是0,有人能写下它并解释它是如何工作的,这样我以后就可以写了

public class Task {
    public static void main(String[] args) {

    }

    public static double powArray (double a[]){
        for (int i = 1; i < a.length; i++) {
            a[i] = Math.pow(a[i], 2.0);
            System.out.print(a[i]);
            return powArray(a);
        }
        return -1;
    }
}
公共类任务{
公共静态void main(字符串[]args){
}
公共静态双数组(双a[]{
for(int i=1;i

此外,编译后没有任何结果,只清除控制台,不包含任何数字等。

您可以使用下面的代码段,但这并没有考虑到您的一般情况,即您将传递幂,目前幂为2

public class Task {
public static void main(String[] args) {
    double[] arr = {2.0,3.0,4.0};
    powArray(arr);
    for(double a : arr){
        System.out.println(a);
    }
}

public static void powArray (double a[]){
    for (int i = 0; i < a.length; i++) {
        a[i] = Math.pow(a[i], 2.0);
    }
}
}
公共类任务{
公共静态void main(字符串[]args){
双[]arr={2.0,3.0,4.0};
功率阵列;
用于(双a:arr){
系统输出打印项次(a);
}
}
公共静态数组(双a[]{
for(int i=0;i
main方法不应为空,因为它是起点。因为powArray是一个静态方法,所以可以在主方法中直接调用它。 powArray应该返回一个双精度数组,但它只是返回一个双精度数组 for循环从1开始,但转到arraylength-1,它将为n-1个元素而不是n个元素运行 在返回的每个循环迭代中,return语句进行递归调用(再次调用相同的方法,这将导致堆栈溢出)

正如您所说,“我需要编写一个名为powArray的方法,它接受一个双数组a,并返回一个包含平方元素的新数组。” 您需要改进以下内容

  • 您没有返回数组
  • 从for循环中删除return语句,我想您应该尝试递归
  • 如果您想返回一个包含平方元素的新数组,那么在数组方法中创建一个新数组,复制平方值并返回该数组
  • 举一个例子:

    public static void main(String[] args) {
            // TODO Auto-generated method stub
            double[] squareArry = powArray(new double[]{10,20,30});
    
        }
    
        public static double[] powArray (double a[]){
            double[] b = new double[a.length];
            for (int i = 0; i < a.length; i++) {
                b[i] = Math.pow(a[i], 2.0);
                System.out.print(b[i]);
            }
            return b;
        }
    
    publicstaticvoidmain(字符串[]args){
    //TODO自动生成的方法存根
    double[]squareArry=powdarray(新的double[]{10,20,30});
    }
    公共静态双[]数组(双a[]){
    double[]b=新的双精度[a.长度];
    for(int i=0;i
    如果要使用递归,则不需要返回数组,因为您将更改传递给自身的数组的值。仔细查看以下递归示例:

    public static void main(String[] args) {
            // TODO Auto-generated method stub
            double a[] = new double[]{2,5,4,6};
             powArray(a,0);
            for(double value:a){
                System.out.println(value);
            }
    
        }
    
        public static void powArray(double a[], int index) {
            if (index < a.length) {
                a[index] = Math.pow(a[index], 2.0);
                powArray(a, ++index);
            }
        }
    
    publicstaticvoidmain(字符串[]args){
    //TODO自动生成的方法存根
    双a[]=新的双[]{2,5,4,6};
    功率阵列(a,0);
    用于(双值:a){
    系统输出打印项次(值);
    }
    }
    公共静态数组(双a[],整数索引){
    如果(索引
    您正在创建一个递归方法,因为您在return
    返回数组(a)中调用了您的方法,因此这将一次又一次地调用您的方法,直到您的条件出错并返回-1

    。。。我需要写一个名为powArray的方法,它接受一个双数组, 并返回一个新数组

    第一部分是正确的方法,称为powArray,它采用双数组,但第二部分不是返回数组,而是返回双数组,而是方法签名应该如下所示:

    public static double[] powArray (double a[]){
    //------------------^^
    
    现在返回部分应该是这样的

    public static double[] powArray (double a[]){
        for (int i = 0; i < a.length; i++) {
             a[i] = Math.pow(a[i], 2.0);
        }
        return a;//<<-------------return the result
    }
    
    输出:

    [25.0, 36.0, 64.0, 49.0]
    

    除了Sandeep Kakote的答案之外:

     public static void main(String[] args) {
                // TODO Auto-generated method stub
                double[] squareArry = powArray(new double[]{10,20,30},3);
    
            }
    
            public static double[] powArray (double a[],int z){
                double[] b = new double[a.length];
                for (int i = 0; i < a.length; i++) {
                    b[i] = Math.pow(a[i], z);
                    System.out.print(b[i]);
                }
                return b;
            }
    
    publicstaticvoidmain(字符串[]args){
    //TODO自动生成的方法存根
    double[]squareArry=powdarray(新的double[]{10,20,30},3);
    }
    公共静态双[]数组(双a[],整数z){
    double[]b=新的双精度[a.长度];
    for(int i=0;i
    您能更清楚地解释一下您的问题吗。嘿,您的代码中有一个错误,java方法不能像在代码中一样多次返回。您不是在返回数组,而是在首先修改当前数组,首先,我会看到这个方法永远不会返回,因为递归。首先,将返回类型从double更改为double数组。然后,再次阅读有关创建和迭代数组的书籍。不,我不会为你做更多的家庭作业;我希望没有其他人这样做。一些指南只是为了帮助你。1-创建一个新的Double数组,该数组的大小与参数中接收到的数组的大小相同。2-将返回类型更改为双精度数组3-对于接收数组中的每个项目,在创建的数组中插入其通电值以返回4-最后返回创建的数组大量存储,我将仔细查看。我的powArray方法的第一个版本也是一样的,但问题是我不知道在main方法中写什么来显示reult。谢谢。@Jurtchak注意你的方法是一个递归方法注意
     public static void main(String[] args) {
                // TODO Auto-generated method stub
                double[] squareArry = powArray(new double[]{10,20,30},3);
    
            }
    
            public static double[] powArray (double a[],int z){
                double[] b = new double[a.length];
                for (int i = 0; i < a.length; i++) {
                    b[i] = Math.pow(a[i], z);
                    System.out.print(b[i]);
                }
                return b;
            }