Смотритель: hubert

package com.javarush.test.level10.lesson11.home05; Подскажите что сделать?)

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

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Map;
import java.util.TreeMap;

/* Количество букв
Ввести с клавиатуры 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());
        }


        Map<Character, Integer> treemap = new TreeMap<Character, Integer>();
        for (int i = 0; i < alphabet.size(); i++)
        {
            treemap.put(alphabet.get(i), 0);
        }

        for (Map.Entry<Character, Integer> pair : treemap.entrySet())
        {
            char key = pair.getKey();
            int value = pair.getValue();
            for (int i = 0; i < list.size(); i++)
            {
                char[] slovo = list.get(i).toCharArray();
                for (int z = 0; z < slovo.length; z++)
                {
                    if (slovo[z] == key)

                    {
                        value++;
                       treemap.put(key,value);
                    }
                }

            }
        }

        for(Map.Entry<Character, Integer> pair : treemap.entrySet()) {
         char o  = pair.getKey();
            int u = pair.getValue();
            System.out.println(o + " " + u);
        }
    }

}

Подскажите Почему TreeMap который я использоал, при сортировке русских букв, которые в нём являются ключами букву ё ставит в самый конец… что за шляпа((и как в моём случае подшаманить код???

вот пример ввода:
а
бб
ввв
гггг
ддддд
ееееее
ёёёёёёё
жжжжжжжж
ззззззззз
ииииииииии

Вот пример вывода:
а 1
б 2
в 3
г 4
д 5
е 6
ж 8
з 9
и 10
й 0
к 0
л 0
м 0
н 0
о 0
п 0
р 0
с 0
т 0
у 0
ф 0
х 0
ц 0
ч 0
ш 0
щ 0
ъ 0
ы 0
ь 0
э 0
ю 0
я 0
ё 7

Сервер не принимает работу… я в печали((

level15.lesson06.task01

Задание решил и собственно вопрос
public static class JuniorJavaDev extends JavaDev{ // тут как бы наследование не нужно но проходит и так и так
        JavaDev zapp = new JavaDev();
        JavaDev hubert = new JavaDev();

        String askZapp(String question) {
            return zapp.answerQuestion(question);
        }

        String askHubert(String question) {
            return hubert.answerQuestion(question);
        }

}

Как я понимаю наследование не нужно из за того что мы создаем объекты JavaDev и с ними работаем.
Наследование убирается из за связи Has-a или из за чего может есть ссылки на ресурсы где это нормально объясняется?

level13.lesson11.bonus03 вопрос по структуре кода

Подскажите кто знает:
Почему в данном коде команда System.out.print©- выполняется (выводятся символы в IDEA), а
команда  printWriter.print©- не выполняется ( IDEA  символы не выводит, или выводит при использовании
 формата printWriter.println©

package com.javarush.test.level13.lesson11.home03;

/* Чтение файла
1. Считать с консоли имя файла.
2. Вывести в консоль(на экран) содержимое файла.
3. Не забыть освободить ресурсы. Закрыть поток чтения с файла и поток ввода с клавиатуры.
*/

import java.io.*;

public class Solution
{
    public static void main(String[] args) throws IOException
    {
        FileInputStream file = new FileInputStream( "C:\\JavaRushHomeWork\\src\\DO NOT READ.txt");
        String s;
        int i = 0;
        PrintWriter printWriter = new PrintWriter(System.out,true);
        while (file.available() >0)
        {
        int date = file.read();
            char c = (char)date;
            printWriter.print©;
            //   System.out.print©;
        }
        file.close();

        //add your code here
    }
}

level28.lesson15.big01 Задание 6 URL Status 400

Есть данная задача, нужно подключиться к сайту и получить объект типа Document, при подключении обработчик ловит ошибку:

org.jsoup.HttpStatusException: HTTP error fetching URL. Status=400, URL=https://hh.ru/hhid/bind?token=CE!4UyFuWf0Afk1EH5Z6oPRY2LIn&uid=TAQCLGr3KCBLB1h_jrMfdg--&backurl=https%25253A%25252F%25252Fhh.ru%25252Fsearch%25252Fvacancy%25253Ftext%25253Djava%25252B%252525252525s%252526page%25253D%252525252525d&expires=1484689080788&hash=BIMe2!EcIixAvtbN636bjOuE9oo-&primaryhost=https://hh.ru

насколько я понял ему не нравится ссылка, которую я передаю. Если я передаю ссылку допустим /http://google.com код отрабатывает без проблем так же как и с другими ресурсами. А вот именно с hh.ua/ работать не хочет, пробовал разные ссылки с него подставлять.

Подскажите как быть.

****************************************************************
Задание 6

1. Слева в панеле Project найди снизу External Libraries. В jsoup найди пакет examples, посмотри классы в этом пакете.

2. По аналогии с реализацией в примерах кода jsoup — реализуй коннекшен к урлу ХэдХантера методом GET.
Это нужно сделать в методе getVacancies класса HHStrategy.
Подсказка: получится объект класса Document.

3. Поставь брекпоинт сразу после коннекшена. Запусти программу в дебаг моде.
Скопируй полученное значение document.html() в буффер.

4. Создай файл с расширением html где-то в корне JavaRushHomeWork.
Вставь содержимое буффера в этот файл и отформатируй его Ctrl+Alt+L, IDEA умеет форматировать HTML.
Ура! Это код страницы HTML :)

5. Реализуй в вакансии (Vacancy) методы equals/hashCode
Alt+Enter — equals() and hashCode()


package com.javarush.test.level28.lesson15.big01.model;

import com.javarush.test.level28.lesson15.big01.vo.Vacancy;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

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

/**
 * Created by JAY on 1/16/2017.
 */
public class HHStrategy implements Strategy {
    private static final String URL_FORMAT = "http://hh.ru/search/vacancy?text=java+%s&page=%d";
    @Override
    public List<Vacancy> getVacancies(String searchString) {
        List<Vacancy> list = new ArrayList<>();
        Document doc = null;
        try {
            doc = Jsoup.connect(URL_FORMAT).get();
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.println(doc);
        return null;
    }
}

level28.lesson15.big01 Задание 6 URL Status 400

Есть данная задача, нужно подключиться к сайту и получить объект типа Document, при подключении обработчик ловит ошибку:

org.jsoup.HttpStatusException: HTTP error fetching URL. Status=400, URL=https://hh.ru/hhid/bind?token=CE!4UyFuWf0Afk1EH5Z6oPRY2LIn&uid=TAQCLGr3KCBLB1h_jrMfdg--&backurl=https%25253A%25252F%25252Fhh.ru%25252Fsearch%25252Fvacancy%25253Ftext%25253Djava%25252B%252525252525s%252526page%25253D%252525252525d&expires=1484689080788&hash=BIMe2!EcIixAvtbN636bjOuE9oo-&primaryhost=https://hh.ru

насколько я понял ему не нравится ссылка, которую я передаю. Если я передаю ссылку допустим /http://google.com код отрабатывает без проблем так же как и с другими ресурсами. А вот именно с hh.ua/ работать не хочет, пробовал разные ссылки с него подставлять.

Подскажите как быть.

****************************************************************
Задание 6

1. Слева в панеле Project найди снизу External Libraries. В jsoup найди пакет examples, посмотри классы в этом пакете.

2. По аналогии с реализацией в примерах кода jsoup — реализуй коннекшен к урлу ХэдХантера методом GET.
Это нужно сделать в методе getVacancies класса HHStrategy.
Подсказка: получится объект класса Document.

3. Поставь брекпоинт сразу после коннекшена. Запусти программу в дебаг моде.
Скопируй полученное значение document.html() в буффер.

4. Создай файл с расширением html где-то в корне JavaRushHomeWork.
Вставь содержимое буффера в этот файл и отформатируй его Ctrl+Alt+L, IDEA умеет форматировать HTML.
Ура! Это код страницы HTML :)

5. Реализуй в вакансии (Vacancy) методы equals/hashCode
Alt+Enter — equals() and hashCode()


package com.javarush.test.level28.lesson15.big01.model;

import com.javarush.test.level28.lesson15.big01.vo.Vacancy;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

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

/**
 * Created by JAY on 1/16/2017.
 */
public class HHStrategy implements Strategy {
    private static final String URL_FORMAT = "http://hh.ru/search/vacancy?text=java+%s&page=%d";
    @Override
    public List<Vacancy> getVacancies(String searchString) {
        List<Vacancy> list = new ArrayList<>();
        Document doc = null;
        try {
            doc = Jsoup.connect(URL_FORMAT).get();
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.println(doc);
        return null;
    }
}

Правильно ли я написал код?

Правильно ли я написал код?
Так как первый вариант, который имел ошибку прошел тестирование. Этот вариант я повторно протестировать не могу, потому подскажите пожалуйста.


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

import java.util.Date;

/* Работа с датой
1. Реализовать метод isDateOdd(String date) так, чтобы он возвращал true, если количество дней с начала года - нечетное число, иначе false
2. String date передается в формате MAY 1 2013
Не забудьте учесть первый день года.
Пример:
JANUARY 1 2000 = true
JANUARY 2 2020 = false
*/

public class Solution
{
    public static void main(String[] args)
    {
        System.out.println(isDateOdd("JANUARY 1 2000"));
    }

    public static boolean isDateOdd(String date) {
        boolean res = false;
        Date yearStartTime = new Date(date);
        yearStartTime.setHours(0);
        yearStartTime.setMinutes(0);
        yearStartTime.setSeconds(0);

        yearStartTime.setDate(0);
        yearStartTime.setMonth(0);

        Date currentDate = new Date(date);

        long msDay = 24*60*60*1000;
        long msTimeDistance = (currentDate.getTime()) - yearStartTime.getTime();

        int dayCount = (int)(msTimeDistance/msDay);
        if (dayCount % 2 == 0) {
            res = false;
        } else if(dayCount % 2 != 0) {
            res = true;
        }

        return res;
    }
}

level08\lesson11\home09 Правильно ли я написал код ?

Правильно ли я написал код?
Так как первый вариант, который имел ошибку прошел тестирование. Этот вариант я повторно протестировать не могу, потому подскажите пожалуйста.


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

import java.util.Date;

/* Работа с датой
1. Реализовать метод isDateOdd(String date) так, чтобы он возвращал true, если количество дней с начала года - нечетное число, иначе false
2. String date передается в формате MAY 1 2013
Не забудьте учесть первый день года.
Пример:
JANUARY 1 2000 = true
JANUARY 2 2020 = false
*/

public class Solution
{
    public static void main(String[] args)
    {
        System.out.println(isDateOdd("JANUARY 1 2000"));
    }

    public static boolean isDateOdd(String date) {
        boolean res = false;
        Date yearStartTime = new Date(date);
        yearStartTime.setHours(0);
        yearStartTime.setMinutes(0);
        yearStartTime.setSeconds(0);

        yearStartTime.setDate(0);
        yearStartTime.setMonth(0);

        Date currentDate = new Date(date);

        long msDay = 24*60*60*1000;
        long msTimeDistance = (currentDate.getTime()) - yearStartTime.getTime();

        int dayCount = (int)(msTimeDistance/msDay);
        if (dayCount % 2 == 0) {
            res = false;
        } else if(dayCount % 2 != 0) {
            res = true;
        }

        return res;
    }
}
  • ,

level10.lesson11.home09

Здравствуйте. У меня на ПК код компилируется и работает. А сервер говорит " Программа не компилируется".

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

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

/* Одинаковые слова в списке
Ввести с клавиатуры в список 20 слов. Нужно подсчитать количество одинаковых слов в списке.
Результат нужно представить в виде словаря Map<String, Integer>, где первый параметр – уникальная строка,
а второй – число, сколько раз данная строка встречалась в списке.
Вывести содержимое словаря на экран.
В тестах регистр (большая/маленькая буква) влияет на результат.
*/

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

        ArrayList<String> words = new ArrayList<String>();
        for (int i = 0; i < 20; i++)
        {
            words.add(reader.readLine());
        }

        Map<String, Integer> map = countWords(words);

        for (Map.Entry<String, Integer> pair : map.entrySet())
        {
            System.out.println(pair.getKey() + " " + pair.getValue());
        }
    }

    public static Map<String, Integer> countWords(ArrayList<String> list)
    {
		String tempKey = "";
        HashMap<String, Integer> result = new HashMap<String, Integer>();

        for (int i = 0; i < list.size(); i++) {
		tempKey = list.get(i);	
		if (!result.containsKey(tempKey)) result.put(tempKey,1);
		else result.replace(tempKey, result.get(tempKey)+1); 
			} 		
        return result;
		 
    }

}


Обнаружил, что метод replace класса HashMap появился в Java 8 SE (на ПК стоит такая). На сервере видимо Java SE 7.

Переписал последний метод без replace, результат аналогичный, на ПК компилируется, работает, а на сервер javarush не компилирует, в чем ошибка?
public static Map<String, Integer> countWords(ArrayList<String> list)
    {
		String tempKey = "";
		int tempValue;
        HashMap<String, Integer> result = new HashMap<String, Integer>();

        for (int i = 0; i < list.size(); i++) {
		tempKey = list.get(i);	
		if (!result.containsKey(tempKey)) result.put(tempKey,1);
		else {
			tempValue = result.get(tempKey)+1;
			result.remove(tempKey);
			result.put(tempKey, tempValue);
			} 
		}
        return result;
		 
		
	}
}

level09.lesson11.bonus01 - "Программа работал слишком долго и была закрыта"

Всем привет!

Задание: Нужно исправить программу, чтобы компилировалась и работала
Задача: Программа вводит два имени файла. И копирует первый файл на место заданное вторым именем.

Как только не пробовал корректировать. Либо не проходит тестирование, либо «Программа работал слишком долго и была закрыта». Ниже привожу вариант приводящий к «Программа работал слишком долго и была закрыта».


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

        String sourceFileName = reader.readLine();
        String destinationFileName = reader.readLine();

        java.io.FileInputStream fileInputStream = new java.io.FileInputStream(sourceFileName);
        java.io.FileOutputStream fileOutputStream = new java.io.FileOutputStream(destinationFileName);

        int count = 0;
        while (fileInputStream.available()>0);
        {
            int data = fileInputStream.read();
            fileOutputStream.write(data);
            count++;
        }

        System.out.println("Скопировано байт " + count);

        fileInputStream.close();
        fileOutputStream.close();
    }
}


Подскажите, какое решение этой задачи у вас прошло тестирование.