com.javarush.test.level09.lesson11.bonus03

public class Solution
{
    public static void main(String[] args) throws Exception
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        ArrayList<String> list = new ArrayList<String>();
        while (true)
        {
            String s = reader.readLine();
            if (s.isEmpty()) break;
            list.add(s);
        }

        String[] array = list.toArray(new String[list.size()]);
        sort(array);

        for (String x : array)
        {
            System.out.println(x);
        }
    }

    public static void sort(String[] array)
    {
        //напишите тут ваш код

        for (int i = 0; i < array.length; i++) {
            if (isNumber(array[i])) {
                for (int j = i; j < array.length; j++) {
                    if (isNumber(array[j])) {
                        int a = Integer.parseInt(array[i]);
                        int b = Integer.parseInt(array[j]);
                        if (a>b) {
                            String buffer = array[i];
                            array[i] = array[j];
                            array[j] = buffer;
                        }
                    }
                }

            } else {
                for (int j = i; j < array.length; j++) {
                    if (!isNumber(array[j]) && isGreaterThan(array[i], array[j])) {
                        String buffer = array[i];
                        array[i] = array[j];
                        array[j] = buffer;
                    }
                }
            }
        }
    }

    //Метод для сравнения строк: 'а' больше чем 'b'
    public static boolean isGreaterThan(String a, String b)
    {
        return a.compareTo(b) > 0;
    }


    //строка - это на самом деле число?
    public static boolean isNumber(String s)
    {
        if (s.length() == 0) return false;

        char[] chars = s.toCharArray();
        for (int i = 0; i < chars.length; i++)
        {
            char c = chars[i];
            if ((i != 0 && c == '-') //есть '-' внутри строки
                    || (!Character.isDigit© && c != '-') ) // не цифра и не начинается с '-'
            {
                return false;
            }
        }
        return true;
    }
}


Подскажите, почему не проходит тестирование?
  • ,

level19.lesson10.bonus03 - не проходит тест:(

Коллеги, приветствую!
Помогите с данной задачей. Перепробовал все возможные проверочные варианты из предыдущих веток — все выводит так как надо. Но сервер упорно требует что-то еще...:)
Заранее благодарю!

package com.javarush.test.level19.lesson10.bonus03;

/* Знакомство с тегами
Считайте с консоли имя файла, который имеет HTML-формат
Пример:
Info about Leela <span xml:lang="en" lang="en"><b><span>Turanga Leela
</span></b></span><span>Super</span><span>girl</span>
Первым параметром в метод main приходит тег. Например, "span"
Вывести на консоль все теги, которые соответствуют заданному тегу
Каждый тег на новой строке, порядок должен соответствовать порядку следования в файле
Количество пробелов, \n, \r не влияют на результат
Файл не содержит тег CDATA, для всех открывающих тегов имеется отдельный закрывающий тег, одиночных тегов нету
Тег может содержать вложенные теги
Пример вывода:
<span xml:lang="en" lang="en"><b><span>Turanga Leela</span></b></span>
<span>Turanga Leela</span>
<span>Super</span>
<span>girl</span>

Шаблон тега:
<tag>text1</tag>
<tag text2>text1</tag>
<tag
text2>text1</tag>

text1, text2 могут быть пустыми
*/


}
  • ,

level18.lesson10.bonus03; - не проходит проверку

package com.javarush.test.level18.lesson10.bonus03;

Прайсы 2
CrUD для таблицы внутри файла
Считать с консоли имя файла для операций CrUD
Программа запускается с одним из следующих наборов параметров:
-u id productName price quantity
-d id
Значения параметров:
где id — 8 символов
productName — название товара, 30 chars (60 bytes)
price — цена, 8 символов
quantity — количество, 4 символа
-u — обновляет данные товара с заданным id
-d — производит физическое удаление товара с заданным id (все данные, которые относятся к переданному id)

В файле данные хранятся в следующей последовательности (без разделяющих пробелов):
id productName price quantity
Данные дополнены пробелами до их длины

Пример:
19846 Шорты пляжные синие 159.00 12
198478 Шорты пляжные черные с рисунко173.00 17
19847983Куртка для сноубордистов, разм10173.991234

import java.io.*;
import java.util.ArrayList;
public class Solution {
    public static void main(String[] args) throws IOException
    {
        ArrayList<String> lines = new ArrayList<>();
        if (args[0].equals("-u"))
        {
            //приводим к необходимому виду
            String uid=args[1];
            if (uid.length()<8) {
                int k=8-uid.length();
                for (int i=0;i<k;i++)
                {
                    uid=uid+" ";
                }
            }else
            {
                uid=uid.substring(0,8);
            }
            String pn=args[2];
            if (pn.length()<30) {
                int k=30-pn.length();
                for (int i=0;i<k;i++)
                {
                    pn=pn+" ";
                }
            } else
            {
                pn=pn.substring(0,30);
            }
            String price=args[3];
            if (price.length()<8) {
                int k=8-price.length();
                for (int i=0;i<k;i++)
                {
                    price=price+" ";
                }
            }  else
            {
                price=price.substring(0,8);
            }
            String quan=args[4];
            if (quan.length()<4) {
                int k=4-quan.length();
                for (int i=0;i<k;i++)
                {
                    quan=quan+" ";
                }
            }else
            {
                quan=quan.substring(0,4);
            }
            BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
            String name =reader.readLine();
            BufferedReader in = new BufferedReader(new FileReader(name));
            String line;
            reader.close();
            while ((line=in.readLine())!= null) {
                lines.add(line);
            }
            in.close();
            //определяем позицию которую надо заменить
            int pos=0;
            for (int i=0;i<lines.size();i++)
            {
                String id="";
                for (int j=0;j<8;j++)
                {
                    if (lines.get(i).charAt(j)!=' ')
                    {
                        id=id+lines.get(i).charAt(j);
                    }
                }
                if (Integer.parseInt(uid)==Integer.parseInt(id))
                {
                    pos=i;
                }
            }
            String finalline=uid+pn+price+quan;
            lines.set(pos,finalline);
            BufferedWriter out = new BufferedWriter(new FileWriter(name));
            for (int i=0;i<lines.size();i++)
            {
                out.write(lines.get(i));
                out.newLine();
            }
            out.close();
        } else
        {
            if (args[0].equals("-d"))
            {
                String uid=args[1];
                if (uid.length()<8) {
                    int k=8-uid.length();
                    for (int i=0;i<k;i++)
                    {
                        uid=uid+" ";
                    }
                }else
                {
                    uid=uid.substring(0,8);
                }
                BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
                String name =reader.readLine();
                BufferedReader in = new BufferedReader(new FileReader(name));
                String line;
                reader.close();
                while ((line=in.readLine())!= null) {
                    lines.add(line);
                }
                in.close();
                //определяем позицию которую надо заменить
                int pos=0;
                for (int i=0;i<lines.size();i++)
                {
                    String id="";
                    for (int j=0;j<8;j++)
                    {
                        if (' '!=lines.get(i).charAt(j))
                        {
                            id=id+lines.get(i).charAt(j);
                        }
                    }
                    int fi=Integer.parseInt(id);
                    int cuid=Integer.parseInt(args[1]);
                    if (cuid==fi)
                    {
                        pos=i;
                    }
                }
                lines.set(pos,""); // пробовал и lines.delete(pos);
                BufferedWriter out = new BufferedWriter(new FileWriter(name));
                for (int i=0;i<lines.size();i++)
                {
                    out.write(lines.get(i));
                    out.newLine();
                }
                out.close();
            }
        }
    }
}


И опять впух… все работает верно… прошу помочь понять, что не нравится валидатору. p.s. возможно проблема в том, что при обновлении таблицы будет лишний перевод коретки на новую строку…
  • ,

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]);
        }
    }
}

level05.lesson12.bonus03 не проходит тестирование.

package com.javarush.test.level05.lesson12.bonus03;

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

/* Задача по алгоритмам
Написать программу, которая:
1. вводит с консоли число N > 0
2. потом вводит N чисел с консоли
3. выводит на экран максимальное из введенных N чисел.
*/
  • ,

level08.lesson11.bonus03

Задачу решил элегантно, специальным стандартным методом :)
Но меня интересует почему этот код не прошел тестирование?
Вроде работает правильно, может проблема в том что я сортировал только по первому символу?

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

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.lang.reflect.Array;
import java.util.Arrays;

/* Задача по алгоритмам
Задача: Введи с клавиатуры 20 слов и выведи их в алфавитном порядке.
*/

public class Solution
{
    public static void main(String[] args) throws Exception
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String[] array = new String[20];
        for (int i = 0; i < array.length; i++)
        {
            array[i] = reader.readLine();
        }

        sort(array);

        for (String x : array)
        {
            System.out.println(x);
        }
    }

    public static void sort(String[] array)
    {
        String r;
        for (int i = 0; i < array.length; i++)
        {
            for (int j = 0; j < array.length - i - 1; j++)
            {
                if (isGreaterThen(array[j].substring(0, 1), array[j + 1].substring(0, 1)))
                {
                    r = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = r;
                }
            }
        }
    }

    //Метод для сравнения строк: 'а' больше чем 'b'
    public static boolean isGreaterThen(String a, String b)
    {
        return a.compareTo(b) > 0;
    }
}

  • ,

level05.lesson12.bonus03

Не проходит проверку на сервере. Вроде всеми возможными способами ее тестировал-нормально работает, но все равно в чем то не устраивает сервер…

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

/* Задача по алгоритмам
Написать программу, которая:
1. вводит с консоли число N > 0
2. потом вводит N чисел с консоли
3. выводит на экран максимальное из введенных N чисел.
*/

public class Solution
{

    public static void main(String[] args) throws Exception

    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
       int N = Integer.parseInt(reader.readLine());
        if (N<=0) return;



        int mas[]=new int [N];

        for (int i=0;i<N;i++)
        {
            mas[i]=Integer.parseInt(reader.readLine());
        }

        int maximum = max(mas);


        System.out.println(maximum);
    }
    public static int max(int mas[])
    {

        int max;
        int buf=0;
        for (int i=0;i<mas.length-1;i++)
        {
            max = (mas[i] > mas[i + 1] ? mas[i] : mas[i + 1]);
            if(i>0)
                buf=buf>max?buf:max;
            else
                buf=max;

        }
        return buf;
    }
}

level08.lesson11.bonus03

Решая вот эту задачу.
/* Задача по алгоритмам
Задача: Введи с клавиатуры 20 слов и выведи их в алфавитном порядке.
*/

public class Solution
{
    public static void main(String[] args) throws Exception
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String[] array = new String[20];
        for (int i = 0; i < array.length; i++)
        {
            array[i] = reader.readLine();
        }

        sort(array);

        for (String x : array)
        {
            System.out.println(x);
        }
    }

    public static void sort(String[] array)
    {
        for (int i = 0; i < array.length; i++)
        {
            for (int j = 0; j < array.length; j++)
            {
                if (isGreaterThen(array[i], array[j]) == false )
                {
                    String temp = array[i];
                    array[i] = array[j];
                    array[j] = temp;
                }
            }
        }
    }

    //Метод для сравнения строк: 'а' больше чем 'b'
    public static boolean isGreaterThen(String a, String b)
    {
        return a.compareTo(b) > 0;
    }
}


Возник вопрос: а правильно ли она поставлена? Если рассматривать сортировку через compareTo(), то этот этот метод не учитывает регистр.
При вводе: а, Б
Ответ будет: Б, а
Не правильно ли будет изменить метод compareTo() на ccollator? Это так, мысли в слух, никому не в обиду)
  • ,

level05.lesson12.bonus03

Уже многие варианты перепробовал с разным написанием кода, сервер не принимает решение!
В итоге, начал мыслить сложнее и даже массив стал использовать, и вот что из этого вышло:

package com.javarush.test.level05.lesson12.bonus03;

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

/* Задача по алгоритмам
Написать программу, которая:
1. вводит с консоли число N > 0
2. потом вводит N чисел с консоли
3. выводит на экран максимальное из введенных N чисел.
*/

public class Solution
{
    public static void main(String[] args) throws Exception
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        int maximum = 0;
        int N;
        while(true)
        {
            String sin = reader.readLine();
            if (!sin.isEmpty() && checkString(sin))
            {
                N = Integer.parseInt(sin);
                if (N > 0)
                {
                    break;
                }
            }
        }

        int m[] = new int[N];
        for(int i=0; i<N; i++)
        {
            String sin = reader.readLine();
            if (!sin.isEmpty() && checkString(sin))
            {
                m[i] = Integer.parseInt(sin);
            }
            else
                i-=1;
        }

        maximum = 0;
        for(int i=0; i<N; i++)
        {
            if(m[i] > maximum)
                maximum = m[i];
        }
        System.out.println(maximum);
    }
    public static boolean checkString(String string) {
        try {
            Integer.parseInt(string);
        } catch (Exception e) {
            return false;
        }
        return true;
    }
}

level05.lesson12.bonus03 - работает правильно, а решение не принимается((

Добрый день. Подскажите, пожалуйста, почему переменная m (int), принимает значение введенного числа?

Причем обращаю внимание, не прошу решить задачу, прошу разъяснить вопрос выше.

Заранее спасибо

КОД:

package com.javarush.test.level05.lesson12.bonus03;

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

/* Задача по алгоритмам
Написать программу, которая:
1. вводит с консоли число N > 0
2. потом вводит N чисел с консоли
3. выводит на экран максимальное из введенных N чисел.
*/

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

        int m = 0;
        String a = reader.readLine();
        int a1 = Integer.parseInt(a);
        if(a1 > 0)
        {
            for (int i = a1; i >= 1; i--)
            {

                String b = reader.readLine();
                int b1 = Integer.parseInt(a);

                if(b1 > m)
                   m = b1;
                
                System.out.println("teper m = " + m);
            }
        }
        int maximum = m;//напишите здесь ваш код
        System.out.println("maximym = " + maximum);
    }
}