我正在尝试用Java编写一个函数,它接受两个数组,并对数组1中的索引值求和,其中的值与数组2匹配,例如。
我建议使用以下方法进行此操作:
public int sumIndex(int[] array1, int[] array2) {
int total = 0;
for (int i=0; i < array1.length; i++) {
for (int j = 0; j < array2.length; j++) {
if (array1[i] == array2[j]) {
total = total + i;
}
}
}
}
但是如果Array2中有一个不匹配的值,我也想返回-1。所以在上面的情况下,1和7不在Array1中,这样会将总数减少-2(每个缺失值为-1)。
如果我添加“else”语句
else {
total = total - 1;
}
或“else if”语句
else if (array1[i] != array2[j]) {
total = total - 1;
}
当I和j循环时,每当存在array1[索引]与array2[索引]不匹配的值时,我就会从总计中删除-1。对于array2中与array1中的值不匹配的值,我尝试只返回-1。
我应该如何编写它,以便只有当array2中的值不是array1的元素时,才会返回total-1?
谢谢
您应该使用列表而不是数组。如果您使用列表,您可以使用:
List<Integer> arrayList1 = Arrays.asList(15, 6, 99, 12, 35);
List<Integer> arrayList2 = Arrays.asList(1, 12, 7, 99, 35);
int indexSum = 0;
for(Integer integer : arrayList2){
indexSum = indexSum + arrayList1.indexOf(integer);
}
当arrayList2的元素integer
不存在于ArrayList1中时,indexOf
方法返回-1。如果它存在,则该方法将返回索引。因此,如果它不存在,则将-1添加到indexSum
。如果它存在,则添加索引。
只要创建一个标志“已找到”,在每个循环中重置它,并将其设置为“真”,如果在“数组2”中找到“数组1”值,则将其设置为“真”,如果为“假”,则将“总计”减少1。
public int sumIndex(int[] array1, int[] array2) {
total = 0;
for (int i=0; i < array1.length; i++) {
bool found = false;
for (int j = 0; j < array2.length; j++) {
if (array1[i] == array2[j]) {
total = total + i;
found = true;
}
}
if(!found)
total--;
}
}
看看您的示例,我假设数组具有唯一的元素。在这种情况下,您需要执行以下操作:
public class Main {
public static void main(String[] args) {
System.out.println(sumIndex(new int[] { 15, 6, 99, 12, 35 }, new int[] { 1, 12, 7, 99, 35, 100, 1000 }));
}
static int sumIndex(int[] array1, int[] array2) {
int total = 0, i, j;
// Nested loops to calculate sum of indices having equal values
for (i = 0; i < array1.length; i++) {
for (j = 0; j < array2.length; j++) {
if (array1[i] == array2[j]) {
total += i;
break;
}
}
}
// Nested loops to decrease 'total' for the non-matching values of array2
for (j = 0; j < array2.length; j++) {
for (i = 0; i < array1.length; i++) {
if (array1[i] == array2[j]) {
break;
}
}
// If a match is not found, 'i' will reach a value equal to array1.length
if (i == array1.length) {
total--;
}
}
return total;
}
}
输出:
5
问题内容: 从如下所示的数组中,如何获取数组中最大值的索引。对于下面的数组,期望的结果将为‘11’。 问题答案: 我的解决方案是: 注意: 这样,您可以检索与给定 最大值 相关的 每个键 。 __ 如果您只对 其中一个键 感兴趣,只需使用 $ maxs [0]
给定两个数组,是否有一种numpy非循环方法来检查数组之间的每个第i个索引是否匹配,即如果a[i]==b[i],是否检查每个i? 我想这已经被问过了,但是我找不到我要找的东西,如果是的话,我很抱歉。
问题内容: 我有一个大数组和一个将索引列表返回到数组的函数,即 典型的情况是范围是整个数组。不幸的是,使用while进行缩放当然是固定时间的。可惜一个人不能从那里回来。 我可以从中返回什么用作整个数组的索引? 问题答案: NumPy有一个可用于构造和对象的助手: 一般而言,与完全相同。
我在下面编写的代码用于替换工作表中的一些索引匹配公式。它似乎工作得很好,但我认为循环有点笨拙,可能容易出错。有人有什么改进建议吗? 谢谢
首先,我对我的英语感到抱歉。我是一个使用VS Express 2013的C#初学者程序员。 我认为这是我的简单问题:我有一个组合框(cboMantello),里面有两个项目。然后我有一个按钮,使用所选项目的属性并将它们添加到我的角色统计中。另一个按钮删除该属性。 为了避免用户垃圾邮件,我禁用了第一个按钮,并设置了我的组合框。启用为false。这时问题来了。禁用组合框后,它会返回列表中的第一项,因此
问题内容: 我正在寻找给定此数组的函数, 我想寻找针头 “面包” 并得到以下结果 问题答案: 使用。您可以提供一个回调,该回调确定哪些元素保留在数组中以及哪些元素应删除。(从回调返回的值指示应删除给定的元素。)类似这样的东西: 欲获得更多信息: 返回值