Целью кода является поиск номеров, которые составляют targetNumber
. Например, если targetNumber = 9
, тогда код должен получить первые два появляющихся индекса чисел, которые добавляются до targetNumber
. Когда я запускаю свой код, вывод выглядит следующим образом:Неверное вычисление внутри вложенных циклов
The indexes are 10 and 1
Что не так с логикой кода? Заранее спасибо!
public class TwoSum {
public static void main(String[] args){
int[] myArray = {1, 6, 43, 22, 4, 6, 4, 3, 8, 7, 3};
int targetNumber = 9;
int index1 = 0;;
int index2 = 0;
for(int i = 0; i < myArray.length; i++){
for(int j = 1; j < myArray.length; j++){
if(myArray[i] + myArray[j] == targetNumber){
index1 = i;
index2 = j;
break;
}
}
}
System.out.println("The indexes are " + index1 + " and " + index2);
}
}
Просто чтобы прояснить, вы ждете выхода, чтобы быть '1' и' 7'? – user2718281
Поскольку индекс основан на нуле, индексы 10 и 1 ссылаются на последний «3» (индекс 10) и первый «6» (индекс 1). Это далеко не изящное решение, но они складываются до «9». Так в чем проблема, в которой вам нужна помощь? Что он не использует первое вхождение «3» (т. Е. Индекс 7)? – Carsten
@ user2341963, '0' (1) и' 8' (7). Я должен печатать только индексы чисел. –