2015-11-15 2 views
1

Так вот, я получаю полтора часа, и это очень раздражает. Я не уверен, в чем проблема, потому что я перепроверял несколько раз мой код, я искал и искал другие способы, или если я сделал что-то неправильно, и я все еще ничего не вижу.Второе наименьшее число в массиве - неверный вывод

Это отрывок из моего кода:

// MAX AND MIN NUMBER 
    int maxnum = array[0]; 
    int minnum = array[0]; 
    for (int i = 0; i < array.length; i++) { 
     if (array[i] > maxnum) { 
      maxnum = array[i]; 
     } else if (array[i] < minnum) { 
      minnum = array[i]; 
     } 
    } 
    System.out.println("Maximum number is " + maxnum + ", minimum is " + minnum + "."); 
    // -------------------------------------------------------------------------------- 
    // SECOND SMALLEST NUMBER 
    int secondnum = array[0]; 
    for (int i = 0; i < array.length; i++) { 
     if (array[i] == minnum) { 
      secondnum = minnum; 
     } else if (array[i] < minnum) { 
      secondnum = minnum; 
      minnum = array[i]; 
     } else if (array[i] < secondnum) { 
      secondnum = array[i]; 
     } 

    } 
    System.out.println("Second smallest number is " + secondnum + "."); 

массив [я] является входным сигналом от пользователя. Вначале программа попросит вас ввести количество номеров, которые вы хотите ввести, а затем вы начнете вводить их. Я положил в пять, и я ввожу пять чисел, но мое второе наименьшее число совпадает с моим самым маленьким числом. Иногда я получаю правильный ответ. Любые идеи?

EDIT: Работает с помощью пользователя3591111. Благодаря!

+0

Я не 'не вижу каких-либо выражений 'if', сравнивающих число' minimum' с 'secondnum (second min)' – 3kings

ответ

0

В первом случае вы можете начать с i = 1 во втором для попытки.

int secondnum = maxnum; 
for (int i = 0; i < array.length; i++) { 
    if (array[i] != minnum && array[i] <secondnum ) 
     secondnum = array[i]; 

} 

Это не будет работать, если вы повторили номера, потому что ваш маленький может быть равен вашей второй мал для этого вам нужно будет хранить расположение вашего небольшого числа и в случае изменения в if ((array[i] != minnum || smallPos != i) && array[i] <secondnum )

Смежные вопросы