Это моя практика перед моим предстоящим тестом, я пытаюсь заставить пользователя ввести число. И все элементы в массиве 1, которые ниже номера пользователя, будут помещены в новый ArrayList. , а затем я пытаюсь напечатать только самое высокое число в этом ArrayList. Если пользовательский ввод меньше, чем все число в массиве1, он будет возвращать -1. вот мой код, однако, когда я положил 920, он все равно возвращает -1, я думаю, что в моем коде есть что-то не так, чтобы найти наибольшее число в ArrayList. Можете ли вы, ребята, сказать мне, что не так?нахождение максимального числа в ArrayList
static Scanner sc = new Scanner(System.in);
static int[] array1 = {900, 885, 989, 1000, 1500, 1243, 999, 915};
public static int blabla(int[] a, int b) {
Integer d = -1;
ArrayList<Integer> al = new ArrayList<Integer>();
for (int i = 0; i < array1.length; i++) { // this is to find all numbers in array1 that is below user's number, and add it to the ArrayList
if (b > array1[i]) {
al.add(array1[i]);
} // if
} // for
outerloop: // and this function below is to find maximum number in ArrayList
for (int g = (al.size()-1); g == 0; g--) {
for (int j = 0; j <=(g-1); j++) {
if (al.get(j) > al.get(g)) {
break;
}
else if(j == (g-1)) {
if (al.get(g) > al.get(j)){
d = al.get(g);
break outerloop;
}
}
} //for^2
} // for
return d;
} // priceisright
в вашем первом цикле, вы цикл по элементам вновь созданной ArrayList, но этот новый Созданный ArrayList пуст, поэтому этот цикл даже не запускается. Вы хотите вместо этого перебрать элементы переданного массива? – Kon
Вам было бы намного легче понять свой собственный код, если бы вы дали переменным и методам значимое имя, и если вы делегировали методы вместо того, чтобы помещать все в один. Вы также должны подумать о своем алгоритме. Зачем вам нужно два вложенных цикла, чтобы найти максимальный элемент в списке? Все, что вам нужно сделать, - это цикл каждого элемента и сравнить каждый из них с текущим максимумом. Если больше, то измените значение текущего максимума. Также см. Http://docs.oracle.com/javase/7/docs/api/java/util/Collections.html#max%28java.util.Collection%29 –
. Вы можете найти максимальное число более эффективно (O (n^2) не совсем эффективна.). Почему бы не отсортировать его в первую очередь? – TheLostMind