• ,

level15.lesson09.task01

Условие:

В статическом блоке инициализировать labels 5 различными парами ключ-значение.
Требования:
1. В классе Solution должен быть только один метод(main).
2. В классе Solution должно быть объявлено статическое поле labels типа Map.
3. Поле labels должно быть заполнен 5 различными парами ключ-значение в статическом блоке.
4. Метод main должен выводить содержимое labels на экран.

Мой код:

package com.javarush.task.task15.task1514;

import java.util.HashMap;
import java.util.*;

/* 
Статики-1
*/

public class Solution {
    public static Map labels = new HashMap<Double, String>();
    static{
        labels = new HashMap<Double, Integer>();
        labels = new HashMap<Double, Boolean>();
        labels = new HashMap<Double, Byte>();
        labels = new HashMap<Double, Object>();
        labels = new HashMap<Double, Short>();
        labels = new HashMap<Double, Double>();
    }
    public static void main(String[] args) {
        System.out.println(labels);
    }
}
  • ,

task31.3101 неправильный вывод

Друзья, помогите пожалуйста. Проблема такая, задачу решил, валидатор скушал, но вывод получается неправильный. Понимаю, что-то не так с компаратором, но что именно допереть не могу. Без компаратора читает и пишет из директорий хорошо, но соответственно без сортировки. С сортировкой получается приведенный ниже вывод.Пробовал вынести из try-with-resources — вообще не сортирует. Подскажите что не так, хочется понять.
  • ,

task30.task3011 Одно изменение кода

Внеси одну правку в код программы, чтобы вывод всегда был «ABC«, даже если в метод doSmth
передавать параметрами null.
Не изменяй и не добавляй строковые литералы. Не изменяй строки с выводом данных на экран.
Не добавляй сеттеры.

Проверки по экземплярам классов А и В идентичные, Отличается лишь блок по классу С.
Если не менять строковый литерал в 65 строке
c.setName("null");
,
то остаётся блок
try {
       if (c == null && c.getName() != null) {
            }
        } catch (NullPointerException e) {
            c = new C();
            c.setName("C");
        }

Логично, что нам нужен NPE, который вызывается либо изменением одного (!/=) символа, либо flip'ом условий.
Но ни так, ни так задача не принимается.

P.S. можно ещё && на || поменять. С тем же результатом, увы…
  • ,

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;
		 
		
	}
}
  • ,

level17.lesson10.home09

Ребят, просто уже не могу дальше долбится с этой задачей.Ну что не так? Про то, что в условии сказано про транзакционность, которой нет, я вообще молчу. Спасибо за помощь заранее.
* Транзакционность
Сделать метод joinData транзакционным, т.е. если произошел сбой, то данные не должны быть изменены.
1. Считать с консоли 2 имени файла
2. Считать построчно данные из файлов. Из первого файла - в allLines, из второго - в forRemoveLines
В методе joinData:
3. Если список allLines содержит все строки из forRemoveLines, то удалить из списка allLines все строки, которые есть в forRemoveLines
4. Если список allLines НЕ содержит каких-либо строк, которые есть в forRemoveLines, то
4.1. очистить allLines от данных
4.2. выбросить исключение CorruptedDataException
Метод joinData должен вызываться в main. Все исключения обработайте в методе main.
*/

public class Solution {
    public static List<String> allLines = new ArrayList<String>();
    public static List<String> forRemoveLines = new ArrayList<String>();

    public static void main(String[] args) throws IOException{
        String fileName1, fileName2;
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        fileName1 = reader.readLine();
        fileName2 = reader.readLine();


        BufferedReader reader1=new BufferedReader(new FileReader(fileName1));
        BufferedReader reader2=new BufferedReader(new FileReader(fileName1));

        while(reader1.readLine() !=null){
            allLines.add(reader1.readLine());
        }
        while(reader2.readLine() !=null){
            forRemoveLines.add(reader1.readLine());
        }

        try
        {
            new Solution().joinData();
        }catch (Exception e){

        }
    }
    public void joinData () throws CorruptedDataException
    {
        if (allLines.containsAll(forRemoveLines))
        {
            allLines.removeAll(forRemoveLines);
        } else
        {
            allLines.clear();
            throw new CorruptedDataException();
        }
    }
}
  • ,

level17.lesson10.home09

Ребят, просто уже не могу дальше долбится с этой задачей.Ну что не так? Про то, что в условии сказано про транзакционность, которой нет, я вообще молчу. Спасибо за помощь заранее.
* Транзакционность
Сделать метод joinData транзакционным, т.е. если произошел сбой, то данные не должны быть изменены.
1. Считать с консоли 2 имени файла
2. Считать построчно данные из файлов. Из первого файла - в allLines, из второго - в forRemoveLines
В методе joinData:
3. Если список allLines содержит все строки из forRemoveLines, то удалить из списка allLines все строки, которые есть в forRemoveLines
4. Если список allLines НЕ содержит каких-либо строк, которые есть в forRemoveLines, то
4.1. очистить allLines от данных
4.2. выбросить исключение CorruptedDataException
Метод joinData должен вызываться в main. Все исключения обработайте в методе main.
*/

public class Solution {
    public static List<String> allLines = new ArrayList<String>();
    public static List<String> forRemoveLines = new ArrayList<String>();

    public static void main(String[] args) throws IOException{
        String fileName1, fileName2;
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        fileName1 = reader.readLine();
        fileName2 = reader.readLine();


        BufferedReader reader1=new BufferedReader(new FileReader(fileName1));
        BufferedReader reader2=new BufferedReader(new FileReader(fileName1));

        while(reader1.readLine() !=null){
            allLines.add(reader1.readLine());
        }
        while(reader2.readLine() !=null){
            forRemoveLines.add(reader1.readLine());
        }

        try
        {
            new Solution().joinData();
        }catch (Exception e){

        }
    }
    public void joinData () throws CorruptedDataException
    {
        if (allLines.containsAll(forRemoveLines))
        {
            allLines.removeAll(forRemoveLines);
        } else
        {
            allLines.clear();
            throw new CorruptedDataException();
        }
    }
}

level08.lesson11.home05

Всем доброго!
собственно результат вроде правильный, но… терзают сомнения: если «слово» состоит из одного символа? ведь это тоже «первый» символ!
Если в слове есть заглавные буквы — их приводить к общему виду или нет? Хотя тут в задании только про первые символы речь идет… или, лучше сейчас об этом не задумываться?
public class Solution
{
    public static void main(String[] args) throws IOException
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String s = reader.readLine();

        //напишите тут ваш код
        String[]lines=s.split(" ");
        String sl = "";
        for (String line : lines)
        {
           if (!line.isEmpty())
                sl = sl + line.substring(0,1).toUpperCase() + line.substring(1) + " ";
            else
                sl = sl + " ";
        }
        System.out.println(sl.trim());
    }
}


вот пример работы:
com.javarush.test.level08.lesson11.home05.Solution
шерШень любит чай с горошком — это ввод
ШерШень Любит Чай С Горошком — результат

Process finished with exit code 0
— сама задача: /* Мама Мыла Раму. Теперь с большой буквы
Написать программу, которая вводит с клавиатуры строку текста.
Программа заменяет в тексте первые буквы всех слов на заглавные.
Вывести результат на экран.

Пример ввода:
мама мыла раму.

Пример вывода:
Мама Мыла Раму.
*/
  • ,

level06.lesson11.bonus03

Выводит всё правильно, но проверку не проходит. В чем может быть причина?
/* Задача по алгоритмам
Задача: Написать программу, которая вводит с клавиатуры 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));

        ArrayList<Integer> i = new ArrayList<Integer>();
        BufferedReader rd = new BufferedReader(new InputStreamReader(System.in));
        for(int b = 0; b < 5; b++){
            i.add(Integer.parseInt(rd.readLine()));}

        for(int g = i.size() -1; g >= 2; g--)
        {
             boolean check = true;
            for(int j = 0; j < g; j++)
            {

                if(i.get(j) > i.get(j + 1))
                {
                    int temp = i.get(j);
                    i.set(j, i.get(j+1));
                    i.set(j+1, temp);
                    check = false;

                }



            }
            if(check)
                break;


        }
         for(int h = 0; h <=4;h++)
            System.out.println(i.get(h));


    }

}
  • ,

com.javarush.test.level16.lesson03.task05

Вроде простое задание, выполняется правильно, но тестирование не проходит.

package com.javarush.test.level16.lesson03.task05;

import java.util.Date;

/* Поговорим о музыке?
1. Измените класс Violin так, чтоб он стал таском для нити. Используйте интерфейс MusicalInstrument
2. Реализуй необходимый метод в нити Violin. Реализация должна быть следующей:
2.1. Считай время начала игры — метод startPlaying().
2.2. Подожди 1 секунду — метод sleepNSeconds(int n), где n — количество секунд.
2.3. Считай время окончания игры — метод stopPlaying().
2.4. Выведи на консоль продолжительность игры в миллисекундах. Пример «Playing 1002 ms».
*/

public class Solution {
public static void main(String[] args) {
Thread violin = new Thread(new Violin(«Player»));
violin.start();
}

public static class Violin implements MusicalInstrument{
private String owner;

public Violin(String owner) {
this.owner = owner;
}

public Date startPlaying() {
System.out.println(this.owner + " starts playing");
return new Date();
}

public Date stopPlaying() {
System.out.println(this.owner + " stops playing");
return new Date();
}

public void run(){
Date begdate= this.startPlaying();
sleepNSeconds(1);
Date enddate = this.stopPlaying();
System.out.println(this.owner+" "+(enddate.getTime() — begdate.getTime())+" ms");
}
}

public static int delay = 1000;

public static void sleepNSeconds(int n) {
try {
Thread.sleep(n * delay);
} catch (InterruptedException e) {
e.printStackTrace();
}
}

public static interface MusicalInstrument extends Runnable {
Date startPlaying();

Date stopPlaying();
}
}
  • ,

level13.lesson11.home07;

Не компилится код,
ошибка в SimpleObjectstringObject = new StringObject();

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

/* Интерфейс SimpleObject
1. Создай класс StringObject.
2. В классе StringObject реализуй интерфейс SimpleObject с параметром типа String.
3. Программа должна компилироваться.
*/

public class Solution
{
public static void main(String[] args) throws Exception
{
SimpleObjectstringObject = new StringObject();
}

interface SimpleObject{
SimpleObjectgetInstance();
}
class StringObject implements SimpleObject{
public SimpleObjectgetInstance(){
return new StringObject();
}
}

}
  • ,

level05.lesson12.home05

Помогите решить задачу. Все правильно считает, но тестирование не проходит почему то.

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

/* Вводить с клавиатуры числа и считать их сумму
Вводить с клавиатуры числа и считать их сумму, пока пользователь не введёт слово «сумма». Вывести на экран полученную сумму.
*/

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

public class Solution
{
public static void main(String[] args) throws Exception
{
//напишите тут ваш код
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
double sum = 0;
while (true)
{
String ssum = reader.readLine();
if (ssum.equals(«сумма»))
break;
else
{
sum = sum + Double.parseDouble(ssum);
}

}

System.out.println(«Итоговая сумма = „+sum);

}
}

level08.lesson08.task04

класс DATE в для текущей постановки задачи устарел.
Вместо него нужно применять класс GregorianCalendar.
Задача решена с его использованием, и, естественно, не компилируется на сервере. Когда будет пофиксено решение?