• ,

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.
Задача решена с его использованием, и, естественно, не компилируется на сервере. Когда будет пофиксено решение?
  • ,

level19.lesson03.task04

задачу тестировал на файле, все работает, в консоль выдает
Иванов Иван Иванович 31 12 1950
что я делаю не так?
пс: удалял psvm перед компиляцией на сервере

public class Solution {
    public static void main(String[] args) throws IOException, ParseException
    {
        FileInputStream fileInputStream = new FileInputStream("e:/1.txt");
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream,"Cp1251"));
        Scanner scanner = new Scanner(bufferedReader);
        PersonScannerAdapter personScannerAdapter = new PersonScannerAdapter(scanner);
        System.out.println(personScannerAdapter.read().toString());
    }
    public static class PersonScannerAdapter implements PersonScanner
    {
        private Scanner scanner;

        PersonScannerAdapter(Scanner scanner)
        {
            this.scanner = scanner;
        }

        public Person read() throws IOException, ParseException
        {
            ArrayList<String> ss = new ArrayList<>();
            String s="";
            if (scanner.hasNextLine())
            {
                s = scanner.nextLine();
            }
            int start = 0;

            for (int i = 0; i < s.length(); i++)
            {
                if (s.charAt(i)==' ')
                {
                    ss.add(s.substring(start,i));
                    start = i+1;
                }
                if (String.valueOf(s.charAt(i)).matches("[0-9]+"))
                {
                    ss.add(s.substring(i,s.length()));
                    break;
                }

            }

            Date date = (new SimpleDateFormat("dd MM yyyy").parse(ss.get(3)));

            Person person  = new Person(ss.get(1),ss.get(2),ss.get(0),date);
            return person;

        }
        public void close() throws IOException
        {
            scanner.close();
        }

    }
}


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

level18.lesson08.task03 что значит "Все методы оборачиваемого объекта"? Может кто-нибудь пояснить плиз?

Задачу сдал, код отработал, просто перопределены были далеко не все методы FileOutputStream-а.

/* AmigoOutputStream
1 Измените класс AmigoOutputStream так, чтобы он стал Wrapper-ом для класса FileOutputStream. Используйте наследование.
2 При вызове метода close() должны выполняться следующая последовательность действий:
2.1 вызвать метод flush()
2.2 дописать следующий текст [JavaRush © 2012-2013 All rights reserved.], используйте метод getBytes()
2.3 закрыть поток методом close()
*/

}

level29.lesson05.task02

Не розумію, чому такий варіант не проходить:
public class Solution {
    private Integer[] array = new Integer[]{1, 2, 3, 4};

    Number getValueByIndex(int index) {
        return (index >= 0 && index < array.length) ? new Integer(array[index]) : new Double(-1);
    }

    public static void main(String[] args) {
        Number value1 = new Solution().getValueByIndex(5); //-1.0, class java.lang.Double expected
        Number value2 = new Solution().getValueByIndex(2); //3, class java.lang.Integer expected

        System.out.println(value1 + ", " + value1.getClass().toString());
        System.out.println(value2 + ", " + value2.getClass().toString());
    }
}
/*
вивід:
-1.0, class java.lang.Double
3.0, class java.lang.Double
*/

А якщо переписати з if else, то все Ок:
-1.0, class java.lang.Double
3, class java.lang.Integer