【问题标题】:Sending multiple parameters to a method, and returning a value, Java向一个方法发送多个参数,并返回一个值,Java
【发布时间】:2014-12-12 00:58:57
【问题描述】:

我是编程新手。我遇到了这个问题:

"编写一个程序,填充三个数组a、b和c,长度均为8,伪随机整数在2到10之间,包括2但不包括10,并设置第四个数组d的数组元素, 长度为 8, 为 a、b 和 c 的相应元素之和,并输出所有四个数组,如下所示。获取 main 中生成的三个数组(a、b 和 c)并传递给非main 方法添加相应的元素以确定 sum 数组(d)并将 sum 数组(d)返回给 main。所有四个数组都从 main 输出。"

到目前为止,使用随机元素创建数组 a、b 和 c 没有问题。但是我不知道如何在main之外创建d(如何发送多个参数,如何将值返回给main)。请帮忙!

我尝试过这样的事情:

这有什么问题?:

public static void main(String args[]){
//generated arrays a, b, c
        d[] = assemble (a, b, c);
    }
    public assemble (int a, int b, int c){
            int d = a + b + c;
            return;
    }
}

【问题讨论】:

  • 你使用什么语言?

标签: java methods parameters return


【解决方案1】:

第一个问题(伪随机数生成):Math.random() explained

问题的第二部分:遍历(循环)数组以添加每个伪随机整数值并将结果存储在相应的索引位置:d[i] = a[i] + b[i] + c[i ].

由于您的要求是使所有数组的长度相同,我可能会创建一个常量整数 MAX_SIZE 并将其设置为 8。当您声明四个数组时,我会使用此常量来指定大小(即 int [] a = new int[8]).

我不清楚“并输出所有四个数组,如下所示”的指令。我不知道“以下”在这种情况下是什么意思。但是,我假设当您分配每个值时,您可以使用 System.out 将每个值输出到屏幕。

“我不知道如何在 main 之外创建 d。”您的数组“d”是存储在 a、b 和 c 中的值的总和。您的代码是错误的,因为您将整数值(不是整数数组)传递给该方法并返回一个整数并尝试将其分配给一个数组(这是不兼容的数据类型)。您的 assemble 方法应将整数数组作为参数 (a, b, c) 并返回整数数组 (d)。在此方法中,您必须遍历正在传递的数组,获取每个索引位置的值并将总和分配给 'd' 上的相应索引。添加所有值后,您将返回数组。这很简单。我不确定困难是什么。如果你可以在'main'里面做,你也可以在它外面做。

【讨论】:

  • 对于初学者来说,这并不一定简单,尤其是当他们刚刚开始学习如何在 main 之外创建函数并传递参数时。
  • 感谢您的回答。是的,就像代码 Whisperer 所说的那样,对于像我这样的初学者来说,传递争论是很困难的。但我慢慢明白了。谢谢大家。
  • 我的意思不是从参数的角度来看,我的意思是从方法必须执行的动作来看。毕竟, main 只是另一种方法。但是,我明白这一点,而且做得很好。
【解决方案2】:

一些伪代码:

function main{
    // stuff going on
    array result;
    result = assemble (a, b c);
}

function array assemble (array a, array b, array c){
    // do something with the arrays
    // assing result to d
    return array d
}

在 main 中调用 assemble 并使其返回结果数组。将返回的数组赋值给一个变量,以便存储结果。

在此之后,您将在 main 中使用所有 4 个数组(数组 d 存储在您创建的变量中),您可以将它们全部打印出来,或者您需要对它们做任何其他事情。

Java 示例:Passing arguments and returning result

修改了你的代码:

public static void main(String args[]){
    //generated arrays a, b, c
        int[] d = assemble(a, b, c);
}
    public int[] assemble(int[] a, int[] b, int[] c){
            int[] result;
            // do something with a b c and assign it result to result[]
            return result;
    }
}

【讨论】:

  • 我可以在 main 中使用数组 a、b、c 做这些事情,然后将值传递给方法 assemble 吗?
  • 您可以,但根据我从您的问题中了解到的情况,您必须在另一个函数中执行此操作。如果你只需要在另一个函数中组装它并在 main 中做一些事情,它也可以工作。只需确保将修改后的 a、b、c 传递给其他函数,而不是原始函数。您可以通过覆盖原件或为修改后的 a、b、c 创建新变量来做到这一点。
  • 对不起,我还是不明白,哈哈。让我弄清楚如何在此处粘贴我的代码
  • 是的,将代码粘贴到您的问题中,以便我们查看。
猜你喜欢
  • 2013-07-24
  • 1970-01-01
  • 1970-01-01
  • 2017-08-30
  • 2013-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多