• ,

level19.lesson05.task04;

Не могу понять, что не так
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.InputStreamReader;

public class Solution {
        public static void main(String[] args) throws Exception{
            BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
            FileWriter fw = new FileWriter(reader.readLine());
            FileReader fr = new FileReader(reader.readLine());
            while (fr.ready()){
                int data = fr.read();
                if(data == 46)
                    data = 33;
                fw.write(data);

            }
            reader.close();
            fr.close();
            fw.close();
        }
}
  • ,

level15.lesson12.home09

Запарился) То не проходит, вот сейчас не компилируется на сервере из-за:
System.out.println(String.join(" ", String.join("&", paramList).split("([=]+(-)?[\\w\\.]+[&|?]*)|([=&?\\.]+)")));

бедапичаль, что можно еще сделать? сначала было интересно «ха, распарсить строку, эт я мигом», потом страсти накалились «я смогу сам решить, мне не нужна помощь, нет ничего не возможного», а теперь «ну Раиса Ивановна, вы не правы, мое решение тянет как минимум на 3ку, ну не звоните родителям»
зы да, я прошелся по аналогичным темам, как видите результат, я в отчаянии)

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.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Solution {
    public static void main(String[] args) throws IOException {
        //add your code here
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        ArrayList<String> paramList = new ArrayList<String>();

        String urlStr = reader.readLine();
        int startIndex;
        if ((startIndex = urlStr.indexOf('?')) > 0 && startIndex < urlStr.length() - 1) {
            urlStr = urlStr.substring(urlStr.indexOf('?') + 1);

            Pattern pattern = Pattern.compile("\\w+((=+)[\\w\\.\\-]+)?", Pattern.CASE_INSENSITIVE);
            Matcher matcher = pattern.matcher(urlStr);
            while (matcher.find()) {
                int start = matcher.start();
                int end = matcher.end();
                String match = urlStr.substring(start, end);
                System.out.println(match);
                paramList.add(match);
            }

            System.out.println(String.join(" ", String.join("&", paramList).split("([=]+(-)?[\\w\\.]+[&|?]*)|([=&?\\.]+)")));

            for (String s : paramList) {
                if (s.contains("=") && s.substring(0, s.indexOf('=')).equals("obj")) {
                    String num = s.substring(s.lastIndexOf("=") + 1);
                    if (num.matches("-?\\d+(\\.\\d+)?")) {
                        alert(Double.parseDouble(num));
                    } else {
                        alert(num);
                    }
                }
            }
        }
    }

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

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

level18.lesson03.task05

Что здесь может быть не так? Постарался как можно короче сделать код, искал оптимальные решения в гугле (как нас учат — не ограничиваться только предоставленным материалом), всё работает как надо, но не проходит тестирование


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

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;

/* Сортировка байт
Ввести с консоли имя файла
Считать все байты из файла.
Не учитывая повторений - отсортировать их по байт-коду в возрастающем порядке.
Вывести на экран
Закрыть поток ввода-вывода

Пример байт входного файла
44 83 44

Пример вывода
44 83
*/

public class Solution {
    public static void main(String[] args) throws Exception {
        ArrayList<Integer> array = new ArrayList<Integer>();
        ArrayList<Integer> resultArray;

        BufferedReader bfReader = new BufferedReader(new InputStreamReader(System.in));
        String fileName = bfReader.readLine();
        FileInputStream fileReader = new FileInputStream(fileName);

        while (fileReader.available() > 0){
            array.add(fileReader.read());
        }

        resultArray = new ArrayList<Integer>(new HashSet<Integer>(array));
        Collections.sort(resultArray);



        for (Integer one : resultArray)
            System.out.print(one + " ");

        fileReader.close();


    }
}

level16.lesson10.task04, Ребят, никак не могу закрыть поток, в чем неправильность данного решения?


package com.javarush.test.level16.lesson10.task04;

/* А без interrupt слабо?
Разберись, как работает программа.
Сделай так, чтобы в методе ourInterruptMethod можно было сделать так, чтобы нить TestThread завершилась сама.
Нельзя использовать метод interrupt.
*/

public class Solution
{
    public static void main(String[] args) throws InterruptedException
    {
        Thread t = new Thread(new TestThread());
        t.start();
        Thread.sleep(3000);
        ourInterruptMethod();
    }
    public static boolean kerdik = false;
    public static void ourInterruptMethod()
    {
        //Add your code here - добавьте код тут
        kerdik = true;
    }

    public static class TestThread implements Runnable
    {
        public void run()
        {
            while(true)
            {
                try
                {
                    if (kerdik)
                        throw new InterruptedException();
                    Thread.sleep(500);
                    System.out.println("he-he");
                }
                catch (InterruptedException e)
                {
                    break;
                }
            }
        }
    }
}
  • ,

level18.lesson10.home08

Никак не могу взять в толк, в чем проблема? Пробовал читать большие файлы, с кириллицей, несколько файлов сразу, вроде корректный результат на выходе.

P.S. Как добавить код с подсветкой синтаксиса?

Спасибо!
  • ,

level04.lesson06.task01

Не понимаю, выдает правильные ответы при любых комбинациях чисел, но все равно пишет, что программа работает неправильно. Возможно, что это баг?

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

public class Solution
{
    public static void main(String[] args) throws Exception
    {
        //Напишите тут ваш код
        BufferedReader read = new BufferedReader(new InputStreamReader(System.in));
    
        int n1 = Integer.parseInt(read.readLine());
        int n2 = Integer.parseInt(read.readLine());
        
        if (n1 < n2)
            System.out.println("минимум = " + n1);
        else 
            System.out.println("минимум = " + n2);
        /* данные для тестирования:
        введите 1 и 2, минимум =  1
        введите 2 и 1, минимум =  1
        введите 1 и 1, минимум =  1
        введите -1 и -2, минимум =  -2
         */
    }
}
  • ,

level04.lesson06.task01

Не понимаю, выдает правильные ответы при любых комбинациях чисел, но все равно пишет, что программа работает неправильно. Возможно, что это баг?

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

public class Solution
{
    public static void main(String[] args) throws Exception
    {
        //Напишите тут ваш код
        BufferedReader read = new BufferedReader(new InputStreamReader(System.in));
    
        int n1 = Integer.parseInt(read.readLine());
        int n2 = Integer.parseInt(read.readLine());
        
        if (n1 < n2)
            System.out.println("минимум = " + n1);
        else 
            System.out.println("минимум = " + n2);
        /* данные для тестирования:
        введите 1 и 2, минимум =  1
        введите 2 и 1, минимум =  1
        введите 1 и 1, минимум =  1
        введите -1 и -2, минимум =  -2
         */
    }
}

level13.lesson11.bonus01. Есть какие-то мысли, почему сервер не принимает задачку?


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

/* Сортировка четных чисел из файла
1. Ввести имя файла с консоли.
2. Прочитать из него набор чисел.
3. Вывести на консоль только четные, отсортированные по возрастанию.
Пример ввода:
5
8
11
3
2
10
Пример вывода:
2
8
10
C:\Users\Sanya\Desktop\Dest.txt
*/

import java.io.*;
import java.util.ArrayList;

public class Solution
{
    public static void main(String[] args) throws IOException
    {
        // напишите тут ваш код
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        InputStream in = new FileInputStream(reader.readLine());

        ArrayList<Integer> a = new ArrayList<Integer>();
        int num, i = 0, j;
        int N;
        StringBuffer s = new StringBuffer("");
        while (in.available() > 0)
        {
            num = in.read();
            s.append((char) num);
            if (num == '\n')
            {
                s.deleteCharAt(s.length() - 1);
                N = Integer.parseInt(s.toString());
                if (N %2 == 0)
                    a.add(N);
                i++;
                s = new StringBuffer();
            }
        }
        N = Integer.parseInt(s.toString());
        if (N %2 == 0)
            a.add(N);
        for (i = 0; i < a.size(); i ++)
        {
            for (j = 0; j < i; j ++)
            {
                if (a.get(i) < a.get(j))
                {
                    int t = a.get(i);
                    a.set(i, a.get(j));
                    a.set(j, t);
                }
            }
        }
        for (Integer x : a)
            System.out.println(x);
    }
}

level05.lesson12.bonus01

Исправил программу, все компилируется и работает, но на сервере задачу не принимают :(
В чем может быть причина?

/* Нужно исправить программу, чтобы компилировалась и работала
Задача: Программа вводит два числа с клавиатуры и выводит их сумму на экран.
*/

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String a1 = reader.readLine();
int a = Integer.parseInt(a1);

BufferedReader reader2 = new BufferedReader(new InputStreamReader(System.in));
String b1 = reader2.readLine();
int b = Integer.parseInt(b1);

int sum = a + b;
System.out.println(«Sum = » + sum);
  • ,

level29.lesson09.task01

package com.javarush.test.level29.lesson09.task01;

import java.math.BigDecimal;

/* Этот странный BigDecimal
Исправьте ошибку реализации, приводящую к погрешности вычисления, в методе getValue.
Сигнатуру метода не менять. Округление не использовать.
Читайте доп. статью про особенности автобоксинга.
*/
public class Solution {
    public static void main(String[] args) {
        System.out.println(getValue(1.1d, 1.2d));
    }

    public static BigDecimal getValue(double v1, double v2) {
        String resultString = Double.toString(v1 + v2);
        return new BigDecimal(resultString);
    }
}


Это скорее не зов о помощи, а вопрос, почему довольно красивое решение не проходит?

level08.lesson08.task05

После долгого шевеления мозгами таки получилось решить задачу, однако на сервере код не компилируется.
В IntelliJ IDEA все прекрасно работает.
В чем проблема?
package com.javarush.test.level08.lesson08.task05;

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

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

public class Solution
{
    public static void main(String args[])
    {

    }
    public static HashMap<String, String> createMap()
    {
        HashMap<String,String>map = new HashMap<String, String>();
        map.put("Иванов","Ли");
        map.put("Петров","Джонатан");
        map.put("Дерновайцен","Джон");
        map.put("Дурмов","Джон");
        map.put("Куртов","Джон");
        map.put("Рег","Джонни");
        map.put("Мо","Джон");
        map.put("Йелтов","Джон");
        map.put("Шелтов","Джон");
        map.put("Болтов","Джон");
        return map;
    }

    public static void removeTheFirstNameDuplicates(HashMap<String, String> map)
    {
        Iterator<Map.Entry<String,String>>iterator = map.entrySet().iterator();
        ArrayList<String>valuesList = new ArrayList<String>();
        HashMap<String, String> copy = new HashMap<String, String>(map);

        while (iterator.hasNext())
        {
            valuesList.add(iterator.next().getValue());
        }

        int j = 0;

        for (HashMap.Entry<String, String> s : copy.entrySet())
        {
            int i = 0;
            for (int k = 0; k<valuesList.size(); k++)
            {
                for ( ; i < valuesList.size();i++)
                {
                    if (valuesList.get(i).equals(s.getValue()))
                    {
                        j = j + 1;
                    }
                    if (j >= 2)
                    {
                        removeItemFromMapByValue(map, valuesList.get(i));
                        j = 0;
                    }
                }
                j=0;
            }
        }
    }



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

Проблема level08.lesson11.home05

Тоже проблема с задачей. Пробовал: мама мыла раму. мама мыла.раму. мама мыла раму.

Все варианты отрабатывают корректно.Задачу не пропускает

public static void main(String[] args) throws IOException
{
    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    String s = reader.readLine();
    String result = "";
    Boolean stateStartString = false;

    String[] arrStr = s.split("");

    for (int i = 0; i < arrStr.length; i++)
    {
        if(  !arrStr[i].equals(" ") && arrStr[i].substring(0,1) != arrStr[i].substring(0,1).toUpperCase())
        {
            result += ( stateStartString )? arrStr[i].substring(0,1) : arrStr[i].substring(0,1).toUpperCase();
            stateStartString = true;
        }
        else
        {
            result += arrStr[i];
            stateStartString = false;
        }

    }
    s = result;
    System.out.println(s);
}