Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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_For Loop_Indexing - Fatal编程技术网

Java 乘法和移位数组元素

Java 乘法和移位数组元素,java,arrays,for-loop,indexing,Java,Arrays,For Loop,Indexing,我研究这个算法已经有一段时间了,但我就是搞不懂。以下是需要发生的事情: 我有一个数组1(行不移位):.10.15.20.30 数组2(将向左移动):.25.30.28.11 我需要的算法如下 .10 .15 .20 .30 .25 .30 .28 .11 multiply .10 * .25 multiply .15 * .30 multiply .20 * .28 multiply .30 * .11 然后: 求这些乘法的总和 将底部数组索引1向左移动,并将索引1中的元素固定到数组的背面

我研究这个算法已经有一段时间了,但我就是搞不懂。以下是需要发生的事情:

我有一个数组1(行不移位):
.10.15.20.30

数组2(将向左移动):
.25.30.28.11

我需要的算法如下

.10 .15 .20 .30
.25 .30 .28 .11

multiply .10 * .25
multiply .15 * .30
multiply .20 * .28
multiply .30 * .11
然后:

  • 求这些乘法的总和
  • 将底部数组索引1向左移动,并将索引1中的元素固定到数组的背面,这样现在乘法就可以完成了

    .10 .15 .20 .30
    .30 .28 .11 .25
    
  • 重复乘法

  • 重复这些乘法的和
这会一直持续下去,直到我们一路循环通过一次

我的尝试:

float[] statProp = {.25 .30 .28 .11};
float[] statProperties = {.10 .15 .20 .30}
float statPropTotal=0;
for(int z=0; z<5; z++){
    for(int x =0; x < 5)
    statProp[z] = stat[z+1] * (float)statProperties[z];
}
for(int z=0; z<5; z++){
     float statPropTotal=0;
     statPropTotal += (float)statProp[x];
}
float[]statProp={.25.30.28.11};
float[]statProperties={.10.15.20.30}
float statpreptotal=0;
对于(intz=0;z,就我所知(一些性能修复):

publicstaticvoidmain(字符串[]args){
双[]arr1={.10,15,20,30};
双[]arr2={.25,30,28,11};
双和=0;
整数计数=0;
while(计数arr1.length-1){
j=0;
}
总和+=arr1[i]*arr2[j];
}
计数++;
}
系统输出打印项数(总和);
}

这里有一些伪代码来提示您使用一种工作算法(让我们使用
float[]a1
float[]a2
):

在进入代码之前,让我们想象一下,我们不是改变
a2
中值的索引,而是将数组彼此滑动:

.10 .15 .20 .30
        .25 .30 .28 .11
__2__↑   ↑-1-↑   ↑__2__
因此,我们可以用两个循环计算部分
1
2

double sum = 0;

//main loop, where i represents by how much you are shifting a2
for(int i = 0 ; i < a2.length ; i++) {

    //loop for part #1
    for(int j = i ; j < a2.length ; j++) {
        sum = sum + (a1[?] * a2[j]);
    }

    //loop for part #2
    for(int j = 0 ; j < i ; j++) {
        sum = sum + (a1[j] * a2[?]);
    }
}
double sum=0;
//主循环,其中我表示的是你移动a2的量
对于(int i=0;i

在这里,我留下了一些逻辑让你去弄清楚,但一切都在那里

我建议你仍然向我们展示你的尝试。我可以做到。给我第二个更新的@Maljam。预先警告一下,它很糟糕。请注意我对原始方法的性能相关修复。System.arraycopy很昂贵,幸运的是我们可以使用复杂的索引I开始解决这个问题
double sum = 0;

//main loop, where i represents by how much you are shifting a2
for(int i = 0 ; i < a2.length ; i++) {

    //loop for part #1
    for(int j = i ; j < a2.length ; j++) {
        sum = sum + (a1[?] * a2[j]);
    }

    //loop for part #2
    for(int j = 0 ; j < i ; j++) {
        sum = sum + (a1[j] * a2[?]);
    }
}