Вы не должны инициализировать с помощью double smallest = 0;
Это означает, что, если в вашем массиве нет отрицательного числа, это сравнение никогда не будет успешным.
if (thenumbers[i] < smallest)
То, что вам нужно сделать, это инициализировать с помощью
double smallest = Double.MAX_VALUE
Это означает, что ваше условное выражение пройдет хотя бы один раз по сравнению с любым другим числом в массиве.Другой вариант - инициализировать его произвольным числом из массива (например, первым числом).
double smallest = thenumbers[0]
Затем продолжить цикл оттуда, вы можете изменить цикл на
for (int i = 1; i < thenumbers.length; i++) {
, чтобы пропустить бесполезное сравнение первого значения с самим собой.
Это предполагает, что у вас есть хотя бы одно значение в массиве, что не всегда является безопасным предположениемно, вероятно, хорошо для тривиального примера проблемы, как это.