• ,

package com.javarush.test.level06.lesson11.bonus03;

Почему не проходит задача?

package com.javarush.test.level06.lesson11.bonus03;

import java.io.BufferedReader;
import java.io.InputStreamReader;

/* Задача по алгоритмам
Задача: Написать программу, которая вводит с клавиатуры 5 чисел и выводит их в возрастающем порядке.
Пример ввода:
3
2
15
6
17
Пример вывода:
2
3
6
15
17
*/

public class Solution
{
    public static void main(String[] args) throws Exception
    {
        int[] a = new int[5];

        for(int i=0; i<5; i++)
        {
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
            a[i] = Integer.parseInt(bufferedReader.readLine());
        }

        for(int i=0; i<a.length; i++)
        {
            for(int j=0; j<a.length; j++)
            {

                if(a[i]<a[j])
                {
                    int k = a[i];
                    a[i] = a[j];
                    a[j] = k;
                }
            }
        }

        for(int i=0; i<a.length; i++)
        {
            System.out.println(a[i]);
        }
    }
}

4 комментария

tevl
  • tevl
  • +3
ой, так делать точно не надо
for(int i=0; i<5; i++)
        {
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
            a[i] = Integer.parseInt(bufferedReader.readLine());
        }

Вы пять раз запускаете поток на считывание, зачем? его надо вынести из цикла
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
iww
Вынес из цикла и код прошел тест, но до этого тоже все правильно сортировало.
tevl
нет, тут дело не правильности сортировки, тут всё дело в правильности кода. То есть правильного использования методов, классов, потоков и т.д. короче семантика языка. Просто по вашему коду Вам понадобилось зачем-то 5 потоков на считывания, а этого в условии у Вас не было, вот и весь коленкор. А потоки будете изучать дальше и у Вас тогда всё встанет на свои места. А вообще совет на будущее — Будьте очень внимательны к условию задачи
Raybek
Решил поделиться решением задачи? когда сортировку делаем сразу же по мере ввода чисел.
package com.javarush.test.level06.lesson11.bonus03;

import java.io.BufferedReader;
import java.io.InputStreamReader;

/* Задача по алгоритмам
Задача: Написать программу, которая вводит с клавиатуры 5 чисел и выводит их в возрастающем порядке.
Пример ввода:
3
2
15
6
17
Пример вывода:
2
3
6
15
17
*/

public class Solution
{
    public static void main(String[] args) throws Exception
    {
        BufferedReader reader  = new BufferedReader(new InputStreamReader(System.in));

        int[] five_int = new int[5];
        for (int i = 0; i < 5; i++){
            five_int[i] = Integer.parseInt(reader.readLine());
            for (int j = 0; j < i; j++){
                if (five_int[i] < five_int[j]) {
                    int m = five_int[i];
                    for (int k = i; k > j; k--) {
                        five_int[k] = five_int[k-1];
                    }
                    five_int[j] = m;
                    break;
                }
            }
        }

        for (int i = 0; i < 5; i++){
            System.out.println(five_int[i]);
        }
    }
}
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.