• 0.00

  • 0.00

level31.lesson02.home02

/* Находим все файлы
Реализовать логику метода getFileTree, который должен в директории root найти список всех файлов включая вложенные.
Используйте очередь, рекурсию не используйте.
Верните список всех путей к найденным файлам, путь к директориям возвращать не надо.
Путь должен быть абсолютный.
*/

package com.javarush.test.level31.lesson02.home02;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

public class Solution
{

    public static void main(String[] args) throws IOException
    {
        List<String> list = getFileTree("C:\\Users\\1\\Downloads\\JavaRushHomeWork\\JavaRushHomeWork\\test");
        for (int i = 0; i < list.size(); i++)
        {
            System.out.println(list.get(i));
        }
    }

    public static List<String> getFileTree(String root) throws IOException
    {
        List<File> allDir = new LinkedList<>();
        List<String> allFiles = new ArrayList<>();
        File file = new File(root);

        for (File entry : file.listFiles()
                )
        {
            if (entry.isFile()) allFiles.add(entry.getAbsolutePath());
            else allDir.add(entry);
        }

        while (!allDir.isEmpty())
        {
            for (File folder : allDir
                    )
            {
                for (File search : folder.listFiles()
                        )
                {
                    if (search.isFile()) allFiles.add(search.getAbsolutePath());
                    else allDir.add(search);
                }
            }
            allDir.remove(0);
        }
        return allFiles;
    }
}


Вывод:
C:\Users\1\Downloads\JavaRushHomeWork\JavaRushHomeWork\test\1.txt
C:\Users\1\Downloads\JavaRushHomeWork\JavaRushHomeWork\test\3.txt
C:\Users\1\Downloads\JavaRushHomeWork\JavaRushHomeWork\test\6.txt
C:\Users\1\Downloads\JavaRushHomeWork\JavaRushHomeWork\test\7.txt
C:\Users\1\Downloads\JavaRushHomeWork\JavaRushHomeWork\test\123\12333.txt

Перед отправкой на сервер main удаляю. Не принимается. Подскажите, что не так?

level15.lesson12.home09

package com.javarush.test.level15.lesson12.home09;

/* Парсер реквестов
Считать с консоли URl ссылку.
Вывести на экран через пробел список всех параметров (Параметры идут после ? и разделяются &, например, lvl=15).
URL содержит минимум 1 параметр.
Если присутствует параметр obj, то передать его значение в нужный метод alert.
alert(double value) - для чисел (дробные числа разделяются точкой)
alert(String value) - для строк

Пример 1
Ввод:
http://javarush.ru/alpha/index.html?lvl=15&view&name=Amigo
Вывод:
lvl view name

Пример 2
Ввод:
http://javarush.ru/alpha/index.html?obj=3.14&name=Amigo
Вывод:
obj name
double 3.14
*/

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;

public class Solution {
    public static void main(String[] args) throws IOException {
        //add your code here
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String s = reader.readLine();
        String URL[] = s.split("\\?");
        String Parametrs[] = URL[1].split("&");
        int d = Parametrs.length;

        HashMap<String, String> map = new HashMap<String, String>();
        for (int i = 0; i < d; i++)
        {
            if (Parametrs[i].contains("="))
            {
                String mass[] = Parametrs[i].split("=");
                map.put(mass[0], mass[1]);
            }
            else map.put(Parametrs[i], "");
        }

        for (Map.Entry<String, String> entry: map.entrySet())
        {
            String key = entry.getKey();
            System.out.print(key + " ");
        }
        System.out.println();
        for (Map.Entry<String, String> entry: map.entrySet())
        {
            String key = entry.getKey();
            String value = entry.getValue();
            if (key.equals("obj")) {
                try
                {
                    double a = Double.parseDouble(value);
                    alert(a);
                } catch (Exception e) {
                    alert(value);
                }
            }
        }
    }

    public static void alert(double value) {
        System.out.println("double " + value);
    }

    public static void alert(String value) {
        System.out.println("String " + value);
    }
}


Тестовая строка: javarush.ru/alpha/index.html?lvl=15&view&name=Amigo
Выводит: view lvl name
Т.е. почему-то сначала выводит параметры без значения, а потом со значением. Хотя забиваем значения в HashMap по очереди. Не могу раскрыть данную загадку. Помогите разобраться, пожалуйста!

level15.lesson12.home09

package com.javarush.test.level15.lesson12.home09;

/* Парсер реквестов
Считать с консоли URl ссылку.
Вывести на экран через пробел список всех параметров (Параметры идут после ? и разделяются &, например, lvl=15).
URL содержит минимум 1 параметр.
Если присутствует параметр obj, то передать его значение в нужный метод alert.
alert(double value) - для чисел (дробные числа разделяются точкой)
alert(String value) - для строк

Пример 1
Ввод:
http://javarush.ru/alpha/index.html?lvl=15&view&name=Amigo
Вывод:
lvl view name

Пример 2
Ввод:
http://javarush.ru/alpha/index.html?obj=3.14&name=Amigo
Вывод:
obj name
double 3.14
*/

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;

public class Solution {
    public static void main(String[] args) throws IOException {
        //add your code here
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String s = reader.readLine();
        String URL[] = s.split("\\?");
        String Parametrs[] = URL[1].split("&");
        int d = Parametrs.length;

        HashMap<String, String> map = new HashMap<String, String>();
        for (int i = 0; i < d; i++)
        {
            if (Parametrs[i].contains("="))
            {
                String mass[] = Parametrs[i].split("=");
                map.put(mass[0], mass[1]);
            }
            else map.put(Parametrs[i], "");
        }

        for (Map.Entry<String, String> entry: map.entrySet())
        {
            String key = entry.getKey();
            System.out.print(key + " ");
        }
        System.out.println();
        for (Map.Entry<String, String> entry: map.entrySet())
        {
            String key = entry.getKey();
            String value = entry.getValue();
            if (key.equals("obj")) {
                try
                {
                    double a = Double.parseDouble(value);
                    alert(a);
                } catch (Exception e) {
                    alert(value);
                }
            }
        }
    }

    public static void alert(double value) {
        System.out.println("double " + value);
    }

    public static void alert(String value) {
        System.out.println("String " + value);
    }
}


Тестовая строка: javarush.ru/alpha/index.html?lvl=15&view&name=Amigo
Выводит: view lvl name
Т.е. почему-то сначала выводит параметры без значения, а потом со значением. Хотя забиваем значения в HashMap по очереди. Не могу раскрыть данную загадку. Помогите разобраться, пожалуйста!

level10.lesson11.home05

package com.javarush.test.level10.lesson11.home05;

import com.sun.deploy.util.StringUtils;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;

/* Количество букв
Ввести с клавиатуры 10 строчек и подсчитать в них количество различных букв (для 33 букв алфавита).  Вывести результат на экран.
Пример вывода:
а 5
б 8
в 3
г 7
д 0
…
я 9
*/

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

        //алфавит
        String abc = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя";
        char[] abcArray = abc.toCharArray();

        ArrayList<Character> alphabet = new ArrayList<Character>();
        for (int i = 0; i < abcArray.length; i++)
        {
            alphabet.add(abcArray[i]);
        }

        //ввод строк
        ArrayList<String> list = new ArrayList<String>();
        for (int i = 0; i < 10; i++)
        {
            String s = reader.readLine();
            list.add(s.toLowerCase());
        }


        //напишите тут ваш код
        for (int i = 0; i < 33; i++)
        {
            int n = 0;
            for (int j = 0; j < list.size(); j++)
            {
                n += org.apache.commons.lang3.StringUtils.countMatches(list.get(j),abcArray[i]);
            }
            System.out.println(abcArray[i] + " " + n);
        }
    }

}

Сервер не принимает решение. Может быть дело в использовании метода countMatches из библиотеки apache? Потому что ответы выдает верные, проверял.

level08.lesson08.task05

package com.javarush.test.level08.lesson08.task05;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

/* Удалить людей, имеющих одинаковые имена
Создать словарь (Map<String, String>) занести в него десять записей по принципу «фамилия» - «имя».
Удалить людей, имеющих одинаковые имена.
*/

public class Solution
{
    public static void main(String[] args)
    {
        HashMap<String , String> map = createMap();
        removeTheFirstNameDuplicates(map);
        System.out.println(map);
    }
    public static HashMap<String, String> createMap()
    {
        //напишите тут ваш код
        Map<String, String> map = new HashMap<String,String>();
        map.put("Ivanov1", "Pitt");
        map.put("Ivanov2", "Pitt");
        map.put("Ivanov3", "Pit3");
        map.put("Ivanov4", "Pit4");
        map.put("Ivanov5", "Pit5");
        map.put("Ivanov6", "Pit6");
        map.put("Ivanov7", "Pit7");
        map.put("Ivanov8", "Pita");
        map.put("Ivanov9", "Pita");
        map.put("Ivanov0", "Pit0");
        return (HashMap) map;
    }

    public static HashMap<String, String> removeTheFirstNameDuplicates(HashMap<String, String> map)
    {
        //напишите тут ваш код
        String[] name1 = new String[10];
        int i=0;
        Iterator<Map.Entry<String, String>> iterator = map.entrySet().iterator();
        while (iterator.hasNext())
        {
            Map.Entry <String, String> pair = iterator.next();
            String name = pair.getValue();
            name1[i] = name;
            i++;
        }
        for (i = 0; i < 10; i++)
        {
            int j=0;
            Iterator<Map.Entry<String, String>> iterator1 = map.entrySet().iterator();
            while (iterator1.hasNext())
            {
                Map.Entry <String, String> pair = iterator1.next();
                String name = pair.getValue();
                if (name.equals(name1[i])) j++;
            }
            if (j>1) removeItemFromMapByValue(map, name1[i]);
        }
        return map;
    }

    public static void removeItemFromMapByValue(HashMap<String, String> map, String value)
    {
        HashMap<String, String> copy = new HashMap<String, String>(map);
        for (Map.Entry<String, String> pair: copy.entrySet())
        {
            if (pair.getValue().equals(value))
                map.remove(pair.getKey());
        }
    }
}

Код работает для разных значений. По приведенным в коде выдает ответ: {Ivanov0=Pit0, Ivanov7=Pit7, Ivanov6=Pit6, Ivanov5=Pit5, Ivanov4=Pit4, Ivanov3=Pit3}. Вроде все верно, но сервер не принимает. Просмотрел темы по решению данной задачи у других. Каждый вроде как решает кто на что горазд) я тоже как мог решил. Глаз замылился уже. Может кто-то найдет ошибку. Заранее, спасибо!