Изменение вашего кода, для меньших чисел, например:
//*******************************************************************
// Welcome to CompileJava!
// If you experience any issues, please contact us ('More Info') -->
//*******************************************************************
import java.lang.Math; // headers MUST be above the first class
import java.util.HashMap;
// one class needs to have a main() method
public class HelloWorld
{
public static int[] array = {1,2,3,4,5,6,7,8,9,10};
// arguments are passed using the text field below this editor
public static void main(String[] args)
{
System.out.println(getTotal());
}
private static HashMap<Integer,Integer> getTotal(){
int total = 0;
HashMap<Integer,Integer> finalTotal = new HashMap<Integer, Integer>();
for (int i = 0; i < array.length; i++) {
total += array[i];
System.out.println("");
System.out.println("//i = " + i + "; arr[i] = " + array[i]);
System.out.println("total += " + array[i] + "; // total = " + total);
for (int j = i+1; j < array.length; j++) {
System.out.println(" //j = " + j + "; arr[j] = " + array[j]);
if(total>5){
finalTotal.put(j,total - array[j]);
System.out.println(" finalTotal += (" + j+", "+total + "-" + array[j]+")");
total = 0;
}
else if(total<5){
total += array[j];
System.out.println(" total += " + array[j]+"; //total = "+total);
}
}
}
return finalTotal;
}
}
Пройдя по коду и записав результаты, вы получите
//i = 0; arr[i] = 1
total += 1; // total = 1
//j = 1; arr[j] = 2
total += 2; //total = 3
//j = 2; arr[j] = 3
total += 3; //total = 6
//j = 3; arr[j] = 4
finalTotal += (3, 6-4)
//j = 4; arr[j] = 5
total += 5; //total = 5
//j = 5; arr[j] = 6
//j = 6; arr[j] = 7
//j = 7; arr[j] = 8
//j = 8; arr[j] = 9
//j = 9; arr[j] = 10
//i = 1; arr[i] = 2
total += 2; // total = 7
//j = 2; arr[j] = 3
finalTotal += (2, 7-3)
//j = 3; arr[j] = 4
total += 4; //total = 4
//j = 4; arr[j] = 5
total += 5; //total = 9
//j = 5; arr[j] = 6
finalTotal += (5, 9-6)
//j = 6; arr[j] = 7
total += 7; //total = 7
//j = 7; arr[j] = 8
finalTotal += (7, 7-8)
//j = 8; arr[j] = 9
total += 9; //total = 9
//j = 9; arr[j] = 10
finalTotal += (9, 9-10)
//i = 2; arr[i] = 3
total += 3; // total = 3
//j = 3; arr[j] = 4
total += 4; //total = 7
//j = 4; arr[j] = 5
finalTotal += (4, 7-5)
//j = 5; arr[j] = 6
total += 6; //total = 6
//j = 6; arr[j] = 7
finalTotal += (6, 6-7)
//j = 7; arr[j] = 8
total += 8; //total = 8
//j = 8; arr[j] = 9
finalTotal += (8, 8-9)
//j = 9; arr[j] = 10
total += 10; //total = 10
//i = 3; arr[i] = 4
total += 4; // total = 14
//j = 4; arr[j] = 5
finalTotal += (4, 14-5)
//j = 5; arr[j] = 6
total += 6; //total = 6
//j = 6; arr[j] = 7
finalTotal += (6, 6-7)
//j = 7; arr[j] = 8
total += 8; //total = 8
//j = 8; arr[j] = 9
finalTotal += (8, 8-9)
//j = 9; arr[j] = 10
total += 10; //total = 10
//i = 4; arr[i] = 5
total += 5; // total = 15
//j = 5; arr[j] = 6
finalTotal += (5, 15-6)
//j = 6; arr[j] = 7
total += 7; //total = 7
//j = 7; arr[j] = 8
finalTotal += (7, 7-8)
//j = 8; arr[j] = 9
total += 9; //total = 9
//j = 9; arr[j] = 10
finalTotal += (9, 9-10)
//i = 5; arr[i] = 6
total += 6; // total = 6
//j = 6; arr[j] = 7
finalTotal += (6, 6-7)
//j = 7; arr[j] = 8
total += 8; //total = 8
//j = 8; arr[j] = 9
finalTotal += (8, 8-9)
//j = 9; arr[j] = 10
total += 10; //total = 10
//i = 6; arr[i] = 7
total += 7; // total = 17
//j = 7; arr[j] = 8
finalTotal += (7, 17-8)
//j = 8; arr[j] = 9
total += 9; //total = 9
//j = 9; arr[j] = 10
finalTotal += (9, 9-10)
//i = 7; arr[i] = 8
total += 8; // total = 8
//j = 8; arr[j] = 9
finalTotal += (8, 8-9)
//j = 9; arr[j] = 10
total += 10; //total = 10
//i = 8; arr[i] = 9
total += 9; // total = 19
//j = 9; arr[j] = 10
finalTotal += (9, 19-10)
//i = 9; arr[i] = 10
total += 10; // total = 10
{2=4, 3=2, 4=9, 5=9, 6=-1, 7=9, 8=-1, 9=9}
Это всего лишь несколько шагов, и это действительно не похоже на то, что ты просил. Я рекомендую посмотреть, как использовать отладчик, и пройтись по коду.
Обратите внимание, что j - это не то же самое, что arr [j]
Обратите внимание, что циклы внутри циклов, все же l oop, и позаботьтесь о начальных позициях хэш-карт l oop.
, которые обновят свое значение, если вы вставите дубликат, учитывая ваш код (обратите внимание, что вы не обрабатываете случай, когда всего == 5/100, l oop достаточно раз, и это обязательно произойдет), и вы получите разные значения.
Начните с более мелких проблем / входов, которые вы можете отладить, и продолжайте свой путь вверх.