• ,

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

level18.lesson10.bonus03

Господа полуночники. Где я не прав?)) Программа работает согласно условию. Самые дотошные проверки не делал (а-ля если id больше 8 символов или если price содержит букву или запятую вместо точки), так как предыдущая, похожая задача прошла без них. Где я не прав?))

/* Прайсы 2
CrUD для таблицы внутри файла
Считать с консоли имя файла для операций CrUD
Программа запускается с одним из следующих наборов параметров:
-u id productName price quantity
-d id
Значения параметров:
где id - 8 символов
productName - название товара, 30 chars (60 bytes)
price - цена, 8 символов
quantity - количество, 4 символа
-u  - обновляет данные товара с заданным id
-d  - производит физическое удаление товара с заданным id (все данные, которые относятся к переданному id)

В файле данные хранятся в следующей последовательности (без разделяющих пробелов):
id productName price quantity
Данные дополнены пробелами до их длины

Пример:
19846   Шорты пляжные синие           159.00  12
198478  Шорты пляжные черные с рисунко173.00  17
19847983Куртка для сноубордистов, разм10173.991234
*/

import java.io.*;
import java.util.ArrayList;
import java.util.Formatter;
import java.util.List;
import java.util.Scanner;

public class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String fileName = reader.readLine();
        reader.close();
        List<String> list = new ArrayList<String>();

        if (args[0].equals("-u")) {
            if (args.length < 5) throw new RuntimeException();

            //Формируем строку productName
            String productName = "";
            try {
                for (int i = 2; i < args.length - 2; i++) {
                    productName += args[i] + " ";
                }
            //Формируем строки id, price и quantity
                String price = args[args.length - 2];
                String quantity = args[args.length - 1];
                String id = args[1];
                
                // Создаем новую строку, которую поместим в файл вместо старой
                Formatter formatter = new Formatter();
                formatter.format("%-8.8s%-30.30s%-8.8s%-4.4s", id, productName, price, quantity);
                String update = formatter.toString();

                //читаем строки из файла и добавляем в массив
                //проверяем содержит ли строка id, и если да,
                //то добавляем в массив новую строку вместо старой
                Scanner scanner = new Scanner(new File(fileName), "cp1251");
                while (scanner.hasNext()) {
                    String line = scanner.nextLine();
                    String idLine = line.substring(0, 8);
                    if (idLine.contains(id)) {
                        list.add(update + "\r\n");
                    }
                    if (!idLine.contains(id)) {
                        list.add(line + "\r\n");
                    }
                }
                scanner.close();

                //записываем обновленные данные в файл из массива
                RandomAccessFile fileUpdate = new RandomAccessFile(fileName, "rw");
                for (int i = 0; i < list.size(); i++) {
                    fileUpdate.write(list.get(i).getBytes("cp1251"));
                }
                fileUpdate.close();
            } catch (Exception e) {

            }
        }

        if (args[0].equals("-d")) {
            if (args.length != 2) throw new RuntimeException();

            try {
                String id = args[1];

                //читаем строки из файла в массив
                //если строка НЕ содержит id, добавляем ее в массив
                Scanner scanner = new Scanner(new File(fileName), "cp1251");
                while (scanner.hasNext()) {
                    String line = scanner.nextLine();
                    String idLine = line.substring(0, 8);
                    if (!idLine.contains(id)) {
                        list.add(line + "\r\n");
                    }
                }
                scanner.close();

                //записываем данные в файл из массива (без строки, которую нужно было удалить)
                BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileName), "cp1251"));
                for (int i = 0; i < list.size(); i++) {
                    bufferedWriter.append(list.get(i));
                }
                bufferedWriter.close();

            } catch (Exception e) {

            }
        }
        else {
            return;
        }
    }
}