• ,

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

level34.lesson02.task03 или Мозг Рака

Господа, крайне редко прошу помощи, но с этой задачей у меня мозги вскипели. Может кто увидит ошибку?

UPD: код удалила, т.к. был получен ответ от администрации
  • ,

package com.javarush.test.level07.lesson09.task05;

Всем привет! Не могу понять в чем причина ошибки:

Exception in thread «main» java.lang.NumberFormatException: For input string: «vrtvrt»
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.parseInt(Integer.java:615)
at com.javarush.test.level06.lesson11.bonus03.Solution.main(Solution.java:32)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)

когда ввожу цифры все нормально, но при вводе строки происходит вот это…

package com.javarush.test.level07.lesson09.task05;

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

/* Удвой слова
1. Введи с клавиатуры 10 слов в список строк.
2. Метод doubleValues должен удваивать слова по принципу a,b,c -> a,a,b,b,c,c.
3. Используя цикл for выведи результат на экран, каждое значение с новой строки.
*/

public class Solution
{
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
//read strings and init ArrayList list here — считать строки с консоли и объявить ArrayList list тут
ArrayListlist = new ArrayList();
for (int i = 0; i < 10; i++)
{
list.add(reader.readLine());
}
ArrayListresult = doubleValues(list);

//print result — вывести на экран result
}

public static ArrayListdoubleValues(ArrayListlist) {
// add your code here — добавь код тут
return null;
}
}
  • ,

При вводе строк с клавиатуры выдает ошибку

Всем привет! Помогите разобраться! Ввожу строку с клавиатуры и выдает ошибку вот такую:

Exception in thread «main» java.lang.NumberFormatException: For input string: «qwewe»
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.parseInt(Integer.java:615)
at com.javarush.test.level06.lesson11.bonus03.Solution.main(Solution.java:32)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)

Это происходит когда ввожу именно строку. Когда числа — проблем нет. Спасибо!

package com.javarush.test.level07.lesson06.task03;
/* 5 строчек в обратном порядке
1. Создай список строк.
2. Считай с клавиатуры 5 строк и добавь в него.
3. Расположи их в обратном порядке.
4. Используя цикл выведи содержимое на экран, каждое значение с новой строки.
*/

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

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

ArrayListlist = new ArrayList();

for (int i = 0; i < 5; i++)
{
list.add(reader.readLine());
}
}
}
  • ,

Программа работает и нормально компелируется у меня, не не компилируется на сервере

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

import com.sun.javafx.scene.layout.region.Margins;

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

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

        int sum=0;
        boolean prov;
        String x;
        while (true) {
            x=reader.readLine();
            prov = Check(x);
            if (prov==true) break;
            sum += convert(x);

        }
        System.out.println(sum);
    }
    public static boolean Check(String s) {
            if (s.equals("сумма")) return true;
            else return false;
    }
    public static int convert(String x) {
        try {
            return Integer.parseInt(x);
        }
        catch (Throwable t) {
            return 0;
        }
    }
}
  • ,

Помогите разобраться level13.lesson11.bonus03;

Есть класс:
public final class BodyPart
{
    final static BodyPart LEG = new BodyPart("нога");
    final static BodyPart HEAD = new BodyPart("голова");
    final static BodyPart ARM = new BodyPart("рука");
    final static BodyPart STOMACH = new BodyPart("грудь");

    private String bodyPart;

    private BodyPart(String bodyPart)
    {
        this.bodyPart = bodyPart;
    }

    @Override
    public String toString()
    {
        return this.bodyPart;
    }
}

Почему мы создаём объекты прямо в классе? И зачем везде нужен методо toString() если мы его не вызываем( но он сам запускается каким то магическим методом).
так же есть еще 1 класс:
public abstract class AbstractRobot implements Attackable,Defensable
{
    private static int hitCount;
    public BodyPart attack()
    {
        BodyPart attackedBodyPart = null;
        hitCount = hitCount + 1;

        if (hitCount == 1)
        {
            attackedBodyPart =  BodyPart.ARM;
        } else if (hitCount == 2)
        {
            attackedBodyPart =  BodyPart.HEAD;
        } else if (hitCount == 3)
        {

            attackedBodyPart =  BodyPart.LEG;
        }
        else if(hitCount == 4){
            hitCount = 0;
            attackedBodyPart =  BodyPart.STOMACH;
        }
        return attackedBodyPart;

В чём смысл статической переменной hitCount если она всегда будет одинаковая и как мы прибавляем 1 в самом начале метода attack() если эта переменная(hitCount) не инициализированая?
  • ,

level05.lesson12.bonus03

Добрый день не могу решить. Что не так? Почти все работает но не проходит валидацию
Да может перемудрил
package com.javarush.test.level05.lesson12.bonus03;

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

/* Задача по алгоритмам
Написать программу, которая:
1. вводит с консоли число N > 0
2. потом вводит N чисел с консоли
3. выводит на экран максимальное из введенных N чисел.
*/

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

        //напишите здесь ваш код
        int n = Integer.parseInt(reader.readLine());
        if (n > 0) {
            Integer[] mass = new Integer[n];
            for (int i = 0; i < mass.length; i++) {
                mass[i]= Integer.parseInt(reader.readLine());
            }
            Arrays.sort(mass, Collections.reverseOrder());
            for(int i = 0; i <  mass.length; i++) {
                System.out.print(mass[i] + "  ");
                maximum = mass[0];
            }
            System.out.println();
            System.out.println(maximum);
        }
    }

level06.lesson11.bonus02

Не могу понять, почему же задача не проходит тестирование, помогите)
public class Solution
{
    public static void main(String[] args) throws IOException
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

        String grandpaName = reader.readLine();
        Cat catGrandpa = new Cat(grandpaName);

        String grandmaName = reader.readLine();
        Cat catGrandma = new Cat(grandmaName);

        String fatherName = reader.readLine();
        Cat catFather = new Cat(fatherName, catGrandpa, null);

        String motherName = reader.readLine();
        Cat catMother = new Cat(motherName, null, catGrandma);

        String sonName = reader.readLine();
        Cat catSon = new Cat(sonName, catFather, catMother);

        String daughterName = reader.readLine();
        Cat catDaughter = new Cat(daughterName, catFather, catMother);

        System.out.println(catGrandpa);
        System.out.println(catGrandma);
        System.out.println(catFather);
        System.out.println(catMother);
        System.out.println(catSon);
        System.out.println(catDaughter);
    }

    public static class Cat
    {
        private String name;
        private Cat father;
        private Cat mother;

        Cat(String name)
        {
            this.name = name;
        }

        Cat(String name, Cat father, Cat mother)
        {
            this.name = name;
            this.father = father;
            this.mother = mother;
        }

        @Override
        public String toString()
        {
            String s = null;
            if (mother == null && father == null)
                s = "Cat name is " + name + ", no mother, no father ";
            else if (mother != null && father == null)
                s = "Cat name is " + name + ", mother is " + mother.name + ", no father";
            else if (mother == null && father != null)
                s = "Cat name is " + name + ", no mather, father is " + father.name;
            else if (mother != null && father != null)
                s = "Cat name is " + name + ", mother is " + mother.name + ", father is " + father.name;
            return s;
        }
    }

}
  • ,

level04.lesson06.task02

Захотел сделать так. По-моему работает правильно, а решение не принимается.
Почему такое может быть?

package com.javarush.test.level04.lesson06.task02;

/* Максимум четырех чисел
Ввести с клавиатуры четыре числа, и вывести максимальное из них.
*/

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));

        int[] num = new int[4];
        for (int i = 0; i < 4; i++)
        {
            num[i] = Integer.parseInt(reader.readLine());
        }
        int max = maX(num);
        System.out.println(max);
    }
    private static int maX(int a[]){
            int m=a[0];
            for (int i = 0; i < (a.length-1); i++)
            {
                if (a[i]>m)m = a[i];
            }
            return m;
       //Напишите тут ваш код
    }
}
  • ,

level08.lesson08.task03

Не проходит тестирование с/без main() на сервере. Intellij все правильно компилирует и показывает.
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

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

public class Solution
{
    public static void main(String[] args)
    {
        Map<String, String> hashMap = createMap();
        int a = getCountTheSameFirstName(hashMap, "Artem");
        int b = getCountTheSameLastName(hashMap, "Name");
        System.out.println(a+" "+b);
    }

    public static Map<String, String> createMap()
    {
        Map<String, String> hashMap = new HashMap<String, String>();
        hashMap.put("Name1", "Artem");
        hashMap.put("Name2", "Artem");
        hashMap.put("Name3", "Anton");
        hashMap.put("Name4", "Anton");
        hashMap.put("Name5", "Liza");
        hashMap.put("Name6", "Katia");
        hashMap.put("Name7", "Marina");
        hashMap.put("Name8", "Marina");
        hashMap.put("Name9", "Misha");
        hashMap.put("Name10", "Liza");
        return  hashMap;
    }

    public static int getCountTheSameFirstName(Map<String, String> map, String name)
    {
        Iterator<Map.Entry<String, String>> iterator = map.entrySet().iterator();
        int count = 0;
        while (iterator.hasNext())
        {
            if(iterator.next().getValue().equals(name))
                count++;
        }
            return count;
    }

    public static int getCountTheSameLastName(Map<String, String> map, String familiya)
    {
        Iterator<Map.Entry<String, String>> iterator = map.entrySet().iterator();
        int count = 0;
        while (iterator.hasNext())
        {
            if(iterator.next().getKey().equals(familiya))
                count++;
        }
        return count;
    }
}