Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Ошибка в цикле / 3 сообщений из 3, страница 1 из 1
09.11.2015, 19:04
    #39098815
oxygene_w
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в цикле
Добрый день.
Не могу понять почему не срабатывает последний цикл. Т.е. первое максимальное значение пропускает условие и в итоге на консоль выводится два одинаковых значения.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
public class Started_11 {
    public static void main (String[] args){

        int[] mas = new int[10];
        for (int i = 0; i < 10; i++){
            mas[i] = (int) (Math.round(Math.random() * 100));
            System.out.print(mas[i] + " ");

        }
        System.out.println();

        //Найти второе по величине max значение в массиве. 

        int max = mas[0];
        for (int am = 0; am < 10; am++) {
            if (mas[am] > max){
                max = mas[am];
            }
        }

                int max2 = 0;
                if (max == mas[0]){
                    max2 = mas[1];
                } else {max2 = mas[0];}

                        for (int am2 = 0; am2 < 10; am2++){
                            if ((max2 != max) && (mas[am2] > max2)){
                                    max2 = mas[am2];
                            }
        }
        System.out.println();
        System.out.println("Максимальное значение массива: " + max);
        System.out.println("Второе максимальное значение массива: " + max2);


    }
}
...
Рейтинг: 0 / 0
10.11.2015, 01:32
    #39099060
output
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в цикле
oxygene_w, потому что в условии
Код: java
1.
if ((max2 != max) && (mas[am2] > max2)) {



max2 еще не равен max, правильнее будет так mas[am2] != max

ну и можно так

Код: java
1.
2.
3.
4.
5.
Arrays.sort(mas);
int max = mas[mas.length - 1];
int max2 = mas[mas.length - 2];
System.out.println(max);
System.out.println(max2);
...
Рейтинг: 0 / 0
10.11.2015, 16:20
    #39099783
oxygene_w
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в цикле
Спасибо.

Со вторым способом еще не сталкивался (Arrays.sort(mas);), буду изучать.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Ошибка в цикле / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]