• ,

level14.lesson08.home09 прошу пояснений

package com.javarush.test.level14.lesson08.home09;

import java.util.ArrayList;
import java.util.List;

/* Валюты
1. Реализуй метод getAmount в классе Money:
1.1. Подумай, какого типа нужно создать приватную переменную, если метод getAmount будет ее возвращать.
1.2. Создай приватную переменную этого типа и верни ее в методе getAmount.
1.3. В конструкторе присвой ей значение, полученное параметром.
2. В отдельном файле создай класс Hrivna.
3. Наследуй класс Hrivna от класса Money.
4. В классе Hrivna реализуй метод getCurrencyName, который возвращает "HRN".
5. В отдельном файле создай класс USD.
6. Наследуй класс USD от класса Money.
7. В классе USD реализуй метод getCurrencyName, который возвращает "USD".
8. Подумай, объекты каких классов можно добавить в список(лист) allMoney.
9. Добавь в конструктор класса Person заполнение листа allMoney объектами всех возможных классов.
*/

public class Solution
{
    public static void main(String[] args)
    {
        Person ivan = new Person("Иван");
        for (Money money : ivan.getAllMoney())
        {
            System.out.println(ivan.name + " имеет заначку в размере " + money.getAmount() + " " + money.getCurrencyName());
        }
    }

    static class Person
    {
        public String name;

        Person(String name)
        {
            this.name = name;
            this.allMoney = new ArrayList<Money>();
            //Add your code here
            !!!    this.allMoney.add(new Hrivna(234534));
            !!!    this.allMoney.add(new USD(534));


        }

        private List<Money> allMoney;

        public List<Money> getAllMoney()
        {
            return allMoney;
        }
    }
}


Вопрос такой: как работают две выделенные восклицательными знаками строчки? Я так понимаю, команда «this.» обращается к соответствующему созданному листу. Что выполняет слово new и цифры внутри скобок?
  • ,

level05.lesson05.task02 Помогите пожалуйста

Реализовать метод fight
Реализовать метод boolean fight(Cat anotherCat):
реализовать механизм драки котов в зависимости от их веса, возраста и силы.
Зависимость придумать самому. Метод должен определять, выиграли ли мы (this) бой или нет,
т.е. возвращать true, если выиграли и false — если нет.
Должно выполняться условие:
если cat1.fight(cat2) = true, то cat2.fight(cat1) = false

У меня несколько вопросов (заранее спасибо добрые люди :) :

1) программа сработала нормально вивела «true», но проверку не прошла.
2) параметр (Cat anotherCat) ето такое правило написание параметра для взаимодействия обєктов?
3) почему когда пишем нужно писать ссилку на параметри обєкта Cat с помощью this.*
Код ниже
public class Cat
{
public String name;
public int age;
public int weight;
public int strength;
public static void main (String[] args) {
Cat cat1 = new Cat(10, 20, 30);
Cat cat2 = new Cat(5, 10, 15);
System.out.print (cat1.fight(cat2));
}

public Cat(int a, int w, int s)
{
this.age = a;
this.weight = w;
this.strength = s;
}

public boolean fight (Cat anotherCat)
{
//Напишите тут ваш код
int skillCat1 = this.age+this.weight+this.strength;
int skillCat2 = anotherCat.age+anotherCat.weight+anotherCat.strength;
if (skillCat1 > skillCat2) {
return true;
}
else {
return false;
}
}
}

ГЛУП НЕ ТОТ КТО НЕ ЗНАЕТ А ТОТ КТО НЕ СПРАШИВАЕТ

package com.javarush.test.level06.lesson08.task04;

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

/* Класс ConsoleReader
Сделать класс ConsoleReader, у которого будут 4 статических метода:
String readString() – читает с клавиатуры строку
int readInt() – читает с клавиатуры число
double readDouble() – читает с клавиатуры дробное число
void readLn() – ждет нажатия enter [использовать readString()]
*/

public class ConsoleReader
{
    public static String readString() throws Exception
    {
        BufferedReader reader = new BufferedReader (new InputStreamReader(System.in));
        String x = reader.readLine();
        return x ;

        //Напишите тут ваш код

    }

    public static int readInt() throws Exception
    {
        BufferedReader reader = new BufferedReader (new InputStreamReader(System.in));
        int x = new Integer(reader.readLine());
        return x ;//Напишите тут ваш код

    }

    public static double readDouble() throws Exception
    {
        BufferedReader reader = new BufferedReader (new InputStreamReader(System.in));
        double x = new Double(reader.readLine());
        return x ;
        //Напишите тут ваш код

    }

    public static void readLn() throws Exception
    {
        ConsoleReader.readString();

    }
}


Это в общем это решение задачи. Сделал ее почти самостоятельно. Не понятно вот что:
public static void readLn() throws Exception
    {
        ConsoleReader.readString();

    }

Сервер принял задачу. На форуме есть много вариантов решения (кто через цикл, кто вообще ничего не писал и сервер принимал)… Но мне все равно не понятно что же происходит при вызове readString? Может кто нибудь проведет «разбор полетов»?

Логические операторы. Объясните мне, в чем разница?

&	Логическое AND (И)
&&	Сокращённое AND
|	Логическое OR (ИЛИ)
||	Сокращённое OR
^	Логическое XOR (исключающее OR (ИЛИ))
!	Логическое унарное NOT (НЕ)
&=	AND с присваиванием
|=	OR с присваиванием
^=	XOR с присваиванием
==	Равно
!=	Не равно
?:	Тернарный (троичный) условный оператор оператор


Мне, как новичку большинство из них понятны, а те что не понятны можно погуглить. Но гугл мне не ответил, в чем разница между логическим И (ИЛИ) и сокращенным? В чем принципиальное отличие (если оно есть). В каких случаях можно применить тот или иной оператор? Спасибо.