Моя задача - написать метод, возвращающий день года с самой низкой температурой.
Если это так, ваша логика c имеет недостатки, например, следующее условие не имеет никакого смысла:
if (Math.abs(minimum - temperatures[i]) < 0.000000001)
Сделайте это следующим образом:
public class Main {
public static void main(String args[]) {
System.out.println(coldest(new double[] { 0, 0, -10, -10, 0, 0 }));
}
public static int coldest(double[] temperatures) {
if (temperatures == null || temperatures.length == 0) {
return -1;
}
double minimum = temperatures[0];
for (double temp : temperatures) {
if (temp < minimum) {
minimum = temp;
}
}
for (int i = 0; i < temperatures.length; i++) {
if (minimum == temperatures[i]) {
return i + 1;
}
}
return -1;
}
}
Вывод:
3
Если ваше требование чтобы получить список всех дней с минимальной температурой, вам нужно вернуть массив вместо одного значения, например
import java.util.Arrays;
public class Main {
public static void main(String args[]) {
// Test
System.out.println(Arrays.toString(coldestDays(new double[] { 0, 0, -10, -10, 0, 0 })));
}
public static int[] coldestDays(double[] temperatures) {
if (temperatures == null || temperatures.length == 0) {
return new int[0];
}
double minimum = temperatures[0];
int count = 0;// To store the required size of the array
for (double temp : temperatures) {
if (temp < minimum) {
minimum = temp;
}
}
for (double t : temperatures) {
if (t == minimum) {
count++;
}
}
int[] minTemps = new int[count];// Create the array
int index = 0;
for (int i = 0; i < temperatures.length; i++) {
if (minimum == temperatures[i]) {
minTemps[index++] = i + 1;// Store the (index +1 ) of the minimum temperatures
}
}
return minTemps;
}
}
Вывод:
[3, 4]
Я не уверен, что вы достигли уровня использования Java коллекций. Если да, вы можете использовать ArrayList
, и в этом случае вам не нужно будет сначала определять количество дней с минимальными температурами, чтобы создать массив соответствующего размера.
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String args[]) {
// Test
System.out.println(coldestDays(new double[] { 0, 0, -10, -10, 0, 0 }));
}
public static List<Integer> coldestDays(double[] temperatures) {
if (temperatures == null || temperatures.length == 0) {
return new ArrayList<Integer>();
}
double minimum = temperatures[0];
List<Integer> days = new ArrayList<Integer>();
for (double temp : temperatures) {
if (temp < minimum) {
minimum = temp;
}
}
for (int i = 0; i < temperatures.length; i++) {
if (minimum == temperatures[i]) {
days.add(i + 1);// Store the (index +1 )of the minimum temperatures
}
}
return days;
}
}
Вывод:
[3, 4]