使用循环将数组中的元素与相乘的java方法
定义一个名为weightedSum()的Java方法,该方法采用两个整数数组作为参数。这个使用循环将数组中的元素与相乘的java方法,java,arrays,loops,for-loop,int,Java,Arrays,Loops,For Loop,Int,定义一个名为weightedSum()的Java方法,该方法采用两个整数数组作为参数。这个 方法使用循环将两个数组的对应元素相乘(即,将每个数组的第一个参数相乘,然后将每个数组的第二个元素相乘,依此类推),并返回这些乘积的总和(也是一个整数)。您可以假设两个数组的长度相等 public int weightedSum(int [] a ,int [] b) { int value; int sum ; for (int i = 0 ;
方法使用循环将两个数组的对应元素相乘(即,将每个数组的第一个参数相乘,然后将每个数组的第二个元素相乘,依此类推),并返回这些乘积的总和(也是一个整数)。您可以假设两个数组的长度相等
public int weightedSum(int [] a ,int [] b)
{
int value;
int sum ;
for (int i = 0 ; i < a.length ; i++)
{
value = a[i] * b [i];
value = value +value ;
}
return value;
public int-weightedSum(int[]a,int[]b)
{
int值;
整数和;
for(int i=0;i
我在为我的赋值写这个方法时遇到困难。我知道它接受数组,但我在写循环本身时遇到困难,因此它将数组的每个单独元素与其在相反数组中的对应元素相乘,因此pos[1]*pos[1],然后将这两个值与pos[2]+pos[2]相加要获得下面所有值的总和,需要对代码进行更改。基本上,在计算两个数组中相应元素的乘积后,您从未更新过变量sum。此外,您可能希望使用long type来存储总和的结果&如果e阵列足够大
public long weightedSum(int [] a ,int [] b)
{
long value = 0;
long sum = 0 ;
for (int i = 0 ; i < a.length ; i++)
{
value = a[i] * b [i];
sum = sum +value ;
}
return sum;
}
公共长权重总和(int[]a,int[]b)
{
长值=0;
长和=0;
for(int i=0;i
更改为:
value += a[i] * b [i];
// value = value + value;
在使用之前,还要将值
初始化为0
。
同时删除sum
变量。尝试以下操作:
public long dotProduct(int [] a, int [] b) {
if (a == null) throw new IllegalArgumentException("a array cannot be null");
if (b == null) throw new IllegalArgumentException("b array cannot be null");
if (a.length != b.length) throw new IllegalArgumentException("arrays must have equal lengths");
long sum = 0L;
for (int i = 0; i < a.length; i++) {
sum += a[i]*b[i];
}
return sum;
}
公共长点积(int[]a,int[]b){
如果(a==null)抛出新的IllegalArgumentException(“数组不能为null”);
如果(b==null)抛出新的IllegalArgumentException(“b数组不能为null”);
如果(a.length!=b.length)抛出新的IllegalArgumentException(“数组必须具有相等的长度”);
长和=0L;
for(int i=0;i
大多数代码看起来都是正确的,但是循环中的第二行不应更改值变量,而应使用值更新sum变量。
比如sum+=值。
然后返回总和。import java.util.*;
import java.util.*;
public class Demo
{
public static void main(String args[])
{
System.out.println("Hello World");
System.out.println("Enter n :");
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
Integer[] arr = new Integer[n];
System.out.println("Enter Elements :");
for(int i=0;i<n;i++)
{
arr[i]=sc.nextInt();
}
//Ascending Array
Arrays.sort(arr);
System.out.println("Elements Are :");
for(int i=0;i<n;i++)
{
System.out.println(arr[i]);
}
//Descending Array
Arrays.sort(arr,Collections.reverseOrder());
System.out.println("Elements Are :");
for(int i=0;i<n;i++)
{
System.out.println(arr[i]);
}
//Product Of First Four Elements Of Array
int product=1;
for(int i=0;i<4;i++)
{
product=product*arr[i];
}
System.out.println("Product : "+product);
}
}
/* Output
Hello World
Enter n :
5
Enter Elements :
4
5
9
8
6
Elements Are :
4
5
6
8
9
Elements Are :
9
8
6
5
4
Product : 2160
*/
import java.util.*;
public class DemoNew
{
public static void main(String args[])
{
System.out.println("Hello World");
System.out.println("Enter N : ");
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
Float[] r = new Float[n];
System.out.println("Enter Distances : ");
for(int i=0;i<n;i++)
{
r[i]=sc.nextFloat();
}
System.out.println("Distances : ");
for(int i=0;i<n;i++)
{
System.out.println(r[i]);
}
for(int i=0;i<r.length;i++)
{
if(r[i] == 0.0)
{
System.out.println("Invalid");
break;
}
else if(r[i] < 0)
{
System.out.println("Invalid");
break;
}
else
{
//Descending Array
Arrays.sort(r,Collections.reverseOrder());
System.out.println("Distances in Descending Order Are :");
for(int j=0;j<n;j++)
{
System.out.println(r[j]);
}
System.out.println("3 Max Distances Are :");
for(int k=0;k<3;k++)
{
System.out.println(r[k]);
}
List<Float> list = Arrays.asList(r);
System.out.println(list);
/* Float[] ar = new Float[r.length];
for(int m=0;m<r.length;m++)
{
ar[m]=r[m];
}
System.out.println("Final Ans :"); */
break;
}
}
}
}
公开课演示
{
公共静态void main(字符串参数[])
{
System.out.println(“你好世界”);
System.out.println(“输入n:”);
扫描仪sc=新的扫描仪(System.in);
int n=sc.nextInt();
整数[]arr=新整数[n];
System.out.println(“输入元素:”);
对于(int i=0;它不会编译,当然也不会返回总和。建议注释掉一些代码是没有意义的,如果不需要,那么应该注释掉deleted@peter.petrov当前位置你最初的回答不仅很好。不是那些投反对票的人太快了:是你的回答,这是错误的。我现在删除了投反对票,但你不能删除ally抱怨因为错误的答案而被否决。(在我看来,这仍然不是一个好答案,因为它并不能真正解释任何事情…)@peter.petrov:看看你的评论,它批评了那些对你的答案投否决票的人的行为,而你的答案一开始肯定是错误的。这看起来像是你觉得很有趣,还是像是抱怨?@peter.petrov:如果答案是错误的,那是没有帮助的,因此应该投否决票。你是否建议在投否决票之前,先投一张否决票如果答案是确定的,你应该多呆一会儿吗?我认为这不是个好主意-我认为应该由回答者在发帖前确保答案是正确的。在这种情况下,你太快了,而不是那些悲观的选民。(不,这并不是说我的答案一开始总是正确的——但如果有人否决了我的错误答案,我永远不会说他们“太快了”。他们的行为完全正确。)提示:您有一个名为sum
的变量,但您没有使用它…要测试您的方法,请使用类似的打印消息,如本文所述--以了解每次迭代中发生的情况。从两个数组开始,每个数组中定义了3个元素,并在代码中添加一些打印以了解它。这仍然无法编译。sum
没有明确指定。(我也会更改值的范围,但这是一个稍微不同的问题。)用零初始化和,如int sum=0“返回这些乘积的和(也是一个整数)”这不再符合规范。@Cruncher我故意更改了合同,以向OP表明,如果返回int,则可能由于溢出而导致错误结果。OP可以自由决定是否将返回类型保留为int/long您的疑问是什么?请详细询问您的问题。