java примеры

Примеры на Java (часть 9)

Здравствуйте, продолжаем решать задачи на Java языке, ниже преставлены ещё 30 задач.

Скачать исходники для статьи можно ниже

Примеры на Java (часть 1) можете прочитать здесь.

Примеры на Java (часть 2) можете прочитать здесь.

Примеры на Java (часть 3) можете прочитать здесь.

Примеры на Java (часть 4) можете прочитать здесь.

Примеры на Java (часть 5) можете прочитать здесь.

Примеры на Java (часть 6) можете прочитать здесь.

Примеры на Java (часть 7) можете прочитать здесь.

Примеры на Java (часть 8) можете прочитать здесь.

Задача 220: Ведьмы и троли танчат и летают, в это время у них растут сила и магия.

public class Hag implements Rage {
   String name;
   int magic;

   Hag(String name, int magic) {
      this.name = name;
      this.magic = magic;
   }

   public void dance() {
      magic = magic + 5;
      System.out.println("Ведьма " + name + " танчит, магия растет " + magic);
   }

   public void fly() {
      magic = magic + 5;
      System.out.println("Ведьма " + name + " летает, магия растет " + magic);
      System.out.println("");
   }

   public static void main(String[] args) {
      Rage mass[] = new Rage[6];
      mass[0] = new Hag("Крыся", 50);
      mass[1] = new Troll("Гнидыч", 100);
      mass[2] = new Hag("Марта", 50);
      mass[3] = new Troll("Ванючка", 100);
      mass[4] = new Hag("Гадя", 50);
      mass[5] = new Troll("Пуч", 100);
      for (Rage d : mass) {
         d.dance();
         d.fly();
      }
   }
}
public class Troll implements Rage {

   String name;
   int str;

   Troll(String name, int str) {
      this.name = name;
      this.str = str;
   }

   public void dance() {
      str = str + 5;
      System.out.println("Троль " + name + " танчит, сила растет " + str);
   }

   public void fly() {
      str = str + 5;
      System.out.println("Троль " + name + " летает, сила растет " + str);
      System.out.println("");
   }
}
public interface Rage {
   public void fly();

   public void dance();
}

Ответ:

Ведьма Крыся танчит, магия растет 55
Ведьма Крыся летает, магия растет 60

Троль Гнидыч танчит, сила растет 105
Троль Гнидыч летает, сила растет 110

Ведьма Марта танчит, магия растет 55
Ведьма Марта летает, магия растет 60

Троль Ванючка танчит, сила растет 105
Троль Ванючка летает, сила растет 110

Ведьма Гадя танчит, магия растет 55
Ведьма Гадя летает, магия растет 60

Троль Пуч танчит, сила растет 105
Троль Пуч летает, сила растет 110

Задача 221: Программа выводит хеш-коды строки, массива, объектов типа car, объекта Object.

public class Main {

   public static void main(String[] args) {

      String stroka = "Привет";
      String massiv[] = { "папа", "мама", "дочь" };
      Car car1 = new Car(100, "KIA");
      Car car2 = new Car(100, "KIA");
      Object ob = new Object();

      System.out.println(stroka.hashCode());
      System.out.println(massiv.hashCode());
      System.out.println(car1.hashCode());
      System.out.println(car2.hashCode());
      System.out.println(ob.hashCode());
   }
}
public class Car {
   int speed;
   String name;

   Car(int speed, String name) {
      this.speed = speed;
      this.name = name;
   }
}

Возможный ответ:

1177014952
18019860
31054905
605645
12097592

Задача 222: Программа показывает работу метода toString. Выводятся имена классов, затем “@” и потом хеш-коды массива строк, массива чисел, объектов типа car, объекта Object.

public class Main {

   public static void main(String[] args) {

      int stroka[] = { 3, 43, 6 };
      String massiv[] = { "папа", "мама", "дочь" };
      Car car1 = new Car(100, "KIA");
      Car car2 = new Car(100, "KIA");
      Object ob = new Object();

      System.out.println(stroka.toString());
      System.out.println(massiv.toString());
      System.out.println(car1.toString());
      System.out.println(car2.toString());
      System.out.println(ob.toString());
   }
}
public class Car {
   int speed;
   String name;

   Car(int speed, String name) {
      this.speed = speed;
      this.name = name;
   }
}

Возможный ответ: [I@422ede
[Ljava.lang.String;@112f614
Car@1d9dc39
Car@93dcd
java.lang.Object@b89838

Задача 223: Программа объявляет все объекты всех типов как объекты типа Object. Создает массив из этих объектов, а затем применяет метод toString ко всем объектам в цикле.

public class Ship {
   int speed;
   String name;

   Ship(int speed, String name) {
      this.speed = speed;
      this.name = name;
   }

   public static void main(String[] args) {
      Object car = new Car(100, "KIA");
      Object tank = new Tank(60, "T34", 85);
      Object ship = new Ship(80, "Крейсер");

      Object massiv[] = new Object[3];
      massiv[0] = car;
      massiv[1] = tank;
      massiv[2] = ship;

      for (Object ob : massiv) {
         System.out.println(ob.toString());
      }
   }
}
public class Car {
   int speed;
   String name;

   Car(int speed, String name)
      this.speed = speed;
      this.name = name;
   }
}
public class Tank {
   int speed;
   String name;
   int gun;

   Tank(int speed, String name, int gun) {
      this.speed = speed;
      this.name = name;
      this.gun = gun;
   }
}

Возможный ответ:

Car@112f614
Tank@1d9dc39
Ship@93dcd

Задача 224: Программа объявляет все объекты всех типов как объекты типа Object. Создает массив из этих объектов, а затем выводит названия объектов, предварительно приведя их к своим типам.

public class Ship {
   int speed;
   String name;

   Ship(int speed, String name) {
      this.speed = speed;
      this.name = name;
   }

   public static void main(String[] args) {
      Object massiv[] = new Object[3];
      massiv[0] = new Car(100, "KIA");
      massiv[1] = new Tank(60, "T34", 85);
      massiv[2] = new Ship(80, "Крейсер");

      System.out.println(((Car) massiv[0]).name);
      System.out.println(((Tank) massiv[1]).name);
      System.out.println(((Ship) massiv[2]).name);
   }
}
public class Car {
   int speed;
   String name;
   Car(int speed, String name) {
      this.speed = speed;
      this.name = name;
   }
}
public class Tank {
   int speed;
   String name;
   int gun;

   Tank(int speed, String name, int gun) {
      this.speed = speed;
      this.name = name;
      this.gun = gun;
   }
}

Ответ:

KIA
T34
Крейсер

Задача 225: Программа показывает работу метода equals с разными типами данных.

public class Main {

   public static void main(String[] args) {

      String stroka = "Привет";
      String massiv[] = { "папа", "мама", "дочь" };
      Car car1 = new Car(100, "KIA");
      Car car2 = new Car(100, "KIA");
      Car car3 = car1;

      System.out.println(stroka.equals("Привет"));
      System.out.println(stroka.equals(massiv));
      System.out.println(car1.equals(car2));
      System.out.println(car1.equals(car2));
      System.out.println(car1.equals(car3));
   }
}
public class Car {
   int speed;
   String name;

   Car(int speed, String name) {
      this.speed = speed;
      this.name = name;
   }
}

Ответ:

true
false
false
false
true

Задача 226: “Программа генерирует исключение ArithmeticException и обрабатывает это исключение.

public class Main { // Исключение ArithmeticException

   public static void main(String[] args) {

      int a = 0;
      String stroka = "a = 0, делить на 0 нельзя";
      String strokacont = "Продолжение работы с=";
      int b = 7;
      int c = 0;
      try {
         c = b / a;
      } catch (ArithmeticException e) {
         System.out.println(stroka);
         System.out.println("Исключение-" + e);
         c = b;
      } finally {
         System.out.println(strokacont + c);
      }
   }
}

Ответ:

a = 0, делить на 0 нельзя
Исключение-java.lang.ArithmeticException: / by zero
Продолжение работы с=7

Задача 227: Программа генерирует исключение ArrayIndexOutOfBoundsException и обрабатывает это исключение.

public class Main { // Исключение ArrayIndexOutOfBoundsException

   public static void main(String[] args) {

      int a[] = { 5, 2, 54, 23 };
      String stroka = "Элемент a[4] - не существует, последний элемент массива a[3]";
      String strokacont = "Продолжение работы, с = ";
      int c;
      try {
         c = a[4];
      } catch (ArrayIndexOutOfBoundsException e) {
         System.out.println(stroka);
         System.out.println("Исключение-" + e);
         c = a[3];
      }
      System.out.println(strokacont + c);
   }
}

Ответ:

Элемент a[4] – не существует, последний элемент массива a[3] Исключение-java.lang.ArrayIndexOutOfBoundsException: 4
Продолжение работы, с = 23

Задача 228: Программа генерирует исключение ArrayStoreException и обрабатывает это исключение.

public class Main {// Исключение ArrayStoreException

   public static void main(String[] args) {

      String stroka1 = "Элементу массива, состоящему из объектов типа Car";
      String stroka2 = "нельзя присвоить строковое значение.";
      String strokacont = "Продолжение работы программы";

      Object carMassive[] = new Car[3];

      try {
         carMassive[0] = "Петя";
      } catch (ArrayStoreException e) {
         System.out.println(stroka1);
         System.out.println(stroka2);
         System.out.println("Исключение-" + e);
         carMassive[0] = new Car(120, "Toyota");
         System.out.println();
      }
      System.out.println(strokacont);
   }
}
public class Car {
   int speed;
   String name;

   Car(int speed, String name) {
      this.speed = speed;
      this.name = name;
   }
}

Ответ:

Элементу массива, состоящему из объектов типа Car,
нельзя присвоить строковое значение.
Исключение-java.lang.ArrayStoreException: java.lang.String

Продолжение работы программы

Задача 229: Программа генерирует исключение ClassCastException и обрабатывает это исключение.

public class Main {// Исключение ClassCastException

   public static void main(String[] args) {

      String stroka1 = "Элемент массива типа Car нельзя привести";
      String stroka2 = "к строковой, целочисленной и прочим переменным.";
      String strokacont = "Продолжение работы программы";

      Object carMassive[] = new Car[3];
      carMassive[0] = new Car(120, "Toyota");
      try {
         System.out.println((String) carMassive[0]);
      } catch (ClassCastException e) {
         System.out.println(stroka1);
         System.out.println(stroka2);
         System.out.println("Исключение-" + e);
         System.out.println();
      }
      System.out.println(strokacont);
   }
}
public class Car {
   int speed;
   String name;

   Car(int speed, String name) {
      this.speed = speed;
      this.name = name;
   }
}

Ответ:

Элемент массива типа Car нельзя привести
к строковой, целочисленной и прочим переменным.
Исключение-java.lang.ClassCastException: Car cannot be cast to java.lang.String

Продолжение работы программы

Задача 230: Программа генерирует универсальное исключение Exception и обрабатывает это исключение.

public class Main { // Исключение Exception

   public static void main(String[] args) {

      int a = 0;
      String stroka = "a = 0, делить на 0 нельзя";
      String strokacont = "Продолжение работы с=";
      int b = 7;
      int c = 0;
      try {
         c = b / a;
      } catch (Exception e) {
         System.out.println(stroka);
         System.out.println("Исключение-" + e);
         c = b;
      } finally {
         System.out.println(strokacont + c);
      }
   }
}

Ответ:

a = 0, делить на 0 нельзя
Исключение-java.lang.ArithmeticException: / by zero
Продолжение работы с=7

Задача 231: Программа генерирует исключение ArithmeticException в методе method1, “пробрасывает” это исключение методу main, в методе main это исключение обрабатывается.

public class Main { // "проброс" throws
   static int cigma;
   static int beta = 7;

   public static void main(String[] args) {
      String stroka = "a = 0, делить на 0 нельзя";
      String strokacont = ("Продолжение работы. сigma=" + beta);
      try {
         method1();
      } catch (ArithmeticException e) {
         System.out.println(stroka);
         System.out.println("Исключение-" + e);
      }
      System.out.println(strokacont);
   }

   public static void method1() throws ArithmeticException {
      int a = 0;
      cigma = beta / a;
   }
}

Ответ:

a = 0, делить на 0 нельзя
Исключение-java.lang.ArithmeticException: / by zero
Продолжение работы. сigma=7

Задача 232: Программа генерирует исключение ArithmeticException в методе method1, “пробрасывает” это исключение методу main, в методе main это исключение не обрабатывается и “пробрасывается” дальше в надежде, что исключение не наступит.

public class Main { // "проброс" throws
   static int cigma;
   static int beta = 7;

   public static void main(String[] args) throws ArithmeticException {
      method1();
      System.out.println("Продолжение работы cigma=" + beta);
   }

   public static void method1() throws ArithmeticException {
      int a = (int) (Math.random() * 3);
      cigma = beta / a;
   }
}

Возможный ответ:

Продолжение работы. сigma=7

Задача 233: Программа генерирует собственное исключение “WEx” в методе useLift, “пробрасывает” это исключение методу main, в методе main это исключение обрабатывается.

public class Man { // создание собственного исключения
   String name;
   int weight;

   Man(String name, int weight) {
      this.name = name;
      this.weight = weight;
   }

   public static void main(String[] args) {

      String stroka = "Общий вес не должен превышать 200 кг.";
      Man man1 = new Man("Олег", 140);
      Man man2 = new Man("Дима", 85);
      Man man3 = new Man("Леша", 40);

      try {
         useLift(man1, man2, man3);
      } catch (WEx e) {
         System.out.println(e.getMessage());
         System.out.println(stroka);
      }
      try {
         useLift(man1, man2);
      } catch (WEx e) {
         System.out.println(e.getMessage());
         System.out.println(stroka);
      }

      try {
         useLift(man2, man3);
      } catch (WEx e) {
         System.out.println(e.getMessage());
         System.out.println(stroka);
      }
      System.out.println("");
      System.out.println("Лифт поехал!");
   }

   public static void useLift(Man... mans) throws WEx {
      int sum = 0;
      for (Man man : mans) {
         sum = sum + man.weight;
      }
      if (sum > 200) {
         throw new WEx();
      }
   }
}
public class WEx extends Exception {

   private String message = "ИСКЛЮЧЕНИЕ-ЛИФТ ПЕРЕГРУЖЕН";

   public String getMessage() {
      return message;
   }
}

Ответ:

ИСКЛЮЧЕНИЕ-ЛИФТ ПЕРЕГРУЖЕН
Общий вес не должен превышать 200 кг.
ИСКЛЮЧЕНИЕ-ЛИФТ ПЕРЕГРУЖЕН
Общий вес не должен превышать 200 кг.

Лифт поехал!

Задача 234: Программа генерирует собственное исключение “WEx” в методе useLift, “пробрасывает” это исключение методу main, в методе main это исключение обрабатывается.

public class WEx extends Exception {

   private String message = "ИСКЛЮЧЕНИЕ-ЛИФТ ПЕРЕГРУЖЕН";

   public String getMessage() {
      return message;
   }
}
public class Man { // создание собственного исключения
   String name;
   int weight;

   Man(String name, int weight) {
      this.name = name;
      this.weight = weight;
   }

   public static void main(String[] args) {

      String stroka = "Общий вес не должен превышать 200 кг.";
      Man man1 = new Man("Олег", 140);
      Man man2 = new Man("Дима", 85);
      Man man3 = new Man("Леша", 40);

      try {
         useLift(man1, man2, man3);
      } catch (WEx e) {
         System.out.println(e.getMessage());
         System.out.println(stroka);
      }
      try {
         useLift(man1, man2);
      } catch (WEx e) {
         System.out.println(e.getMessage());
         System.out.println(stroka);
      }

      try {
         useLift(man2, man3);
      } catch (WEx e) {
         System.out.println(e.getMessage());
         System.out.println(stroka);
      }
      System.out.println("");
      System.out.println("Лифт поехал!");
   }

   public static void useLift(Man... mans) throws WEx {
      int sum = 0;
      for (Man man : mans) {
         sum = sum + man.weight;
      }
      if (sum > 200) {
         throw new WEx();
      }
   }
}

Ответ:

ИСКЛЮЧЕНИЕ-ЛИФТ ПЕРЕГРУЖЕН
Общий вес не должен превышать 200 кг.
ИСКЛЮЧЕНИЕ-ЛИФТ ПЕРЕГРУЖЕН
Общий вес не должен превышать 200 кг.

Лифт поехал!

Задача 235: Программа генерирует собственное исключение “PEx” в методе useCar, “пробрасывает” это исключение методу main, в методе main это исключение обрабатывается.

public class Pass { // создание собственного исключения

   public static void main(String[] args) {

      String stroka = "Автомобиль может перевезти за раз не более 4 человек.";

      try {
         useCar(5);
      } catch (PEx e) {
         System.out.println(e);
         System.out.println(stroka);
      }
      try {
         useCar(6);
      } catch (PEx e) {
         System.out.println(e);
         System.out.println(stroka);
      }
      try {
         useCar(3);
      } catch (PEx e) {
         System.out.println(e);
         System.out.println(stroka);
      }
      System.out.println("");
      System.out.println("Автомобиль поехал!");
   }

   public static void useCar(int i) throws PEx {

      if (i > 4) {
         throw new PEx();
      }
   }
}
public class PEx extends Exception {

   public String toString() {
      return "ИСКЛЮЧЕНИЕ АВТОМОБИЛЬ ПЕРЕГРУЖЕН";
   }
}

Ответ:

ИСКЛЮЧЕНИЕ АВТОМОБИЛЬ ПЕРЕГРУЖЕН
Автомобиль может перевезти за раз не более 4 человек.
ИСКЛЮЧЕНИЕ АВТОМОБИЛЬ ПЕРЕГРУЖЕН
Автомобиль может перевезти за раз не более 4 человек.

Автомобиль поехал!

Задача 236: Программа выводит название потока, его приоритет и группу, потом меняется название потока и снова выводятся его название, приоритет и группа.

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

      Thread t = Thread.currentThread();
      System.out.println("Текущий поток-" + t);
      t.setName("Главный поток");
      System.out.println("Текущий поток-" + t);
   }
}

Ответ:

Текущий поток-Thread[main,5,main] Текущий поток-Thread[Главный поток,5,main]

Задача 237: Программа выводит название потока отдельно и его название, его приоритет и группу вместе.

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

      Thread t = Thread.currentThread();
      t.setName("Главный поток");
      System.out.println("Имя текущего потока - " + t.getName());
      System.out.println(t);
   }
}

Ответ:

Имя текущего потока – Главный поток
Thread[Главный поток,5,main]

Задача 238: Программа выводит состояние потока, название, его приоритет и группу. Название потока и его приоритет предварительно устанавливаются.

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

      Thread t = Thread.currentThread();
      t.setName("Главный поток");
      System.out.println("Состояние потока - " + t.getState());
      t.setPriority(Thread.MAX_PRIORITY);
      System.out.println(t);
   }
}

Ответ:

Состояние потока – RUNNABLE
Thread[Главный поток,10,main]

Задача 239: Программа выводит название потока, его приоритет и группу. Название потока и его приоритет предварительно устанавливаются программой. Программа выводит количество работающих потоков.

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

      Thread t = Thread.currentThread();
      t.setName("Главный поток");
      t.setPriority(Thread.MIN_PRIORITY);
      System.out.println(t);
      System.out.println("Количество работающих потоков - "
            + Thread.activeCount());
   }
}

Ответ:

Thread[Главный поток,1,main] Количество работающих потоков – 1

Задача 240: Программа выводит название потока, его приоритет и группу с задержкой в 2 секунды. Название потока и его приоритет предварительно устанавливаются программой.

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

      Thread t = Thread.currentThread();
      t.setName("Главный поток");
      t.setPriority(Thread.MAX_PRIORITY);
      try {
         Thread.sleep(2000);
      } catch (InterruptedException e) {
         e.printStackTrace();
      }
      System.out.println(t);
   }
}

Ответ:

Thread[Главный поток,10,main]

Задача 241: “Маг, эльф и троль спорят: кому быть королем Средиземья.

// споры о короне Средиземья
public class Mag {
   String name;
   int strenght;

   Mag(String name, int strenght) {
      this.name = name;
      this.strenght = strenght;
   }

   public static void main(String[] args) {

      Elf elf = new Elf("Элайн", 100);
      Troll troll = new Troll("Зузя", 100);
      Mag mag = new Mag("Дамблдор", 100);

      Thread t1 = new Thread(elf);
      t1.start();
      Thread t2 = new Thread(troll);
      t2.start();
      for (int i = 0; i < 4; i++) {
         try {
            Thread.sleep(350);
            System.out.println(mag.name + " Белла королева Средиземья");
         } catch (InterruptedException e) {
            System.out.println("Прерывание");
         }
      }
   }
}
public class Elf implements Runnable {
   String name;
   int strenght;

   Elf(String name, int strenght) {
      this.name = name;
      this.strenght = strenght;
   }

   public void run() {
      for (int i = 0; i < 6; i++) {
         try {
            Thread.sleep(200);
            System.out.println(name + " Артур король Средиземья");
         } catch (InterruptedException e) {
            System.out.println("Прерывание");
         }
      }
   }
}
public class Troll implements Runnable {
   String name;
   int strenght;

   Troll(String name, int strenght) {
      this.name = name;
      this.strenght = strenght;
   }

   public void run() {
      for (int i = 0; i < 3; i++) {
         try {
            Thread.sleep(433);
            System.out.println(name + " Ричард король Средиземья");
         } catch (InterruptedException e) {
            System.out.println("Прерывание");
         }
      }
   }
}

Ответ:

Элайн Артур король Средиземья
Дамблдор Белла королева Средиземья
Элайн Артур король Средиземья
Зузя Ричард король Средиземья
Элайн Артур король Средиземья
Дамблдор Белла королева Средиземья
Элайн Артур король Средиземья
Зузя Ричард король Средиземья
Элайн Артур король Средиземья
Дамблдор Белла королева Средиземья
Элайн Артур король Средиземья
Зузя Ричард король Средиземья
Дамблдор Белла королева Средиземья

Задача 242: Маг, эльф и троль спорят: кому быть королем Средиземья.

public class Elf implements Runnable {
   String name;
   int strenght;

   Elf(String name, int strenght) {
      this.name = name;
      this.strenght = strenght;
   }

   public void run() {
      for (int i = 0; i < 6; i++) {
         try {
            Thread.sleep(200);
            System.out.println(name + " Артур король Средиземья");
         } catch (InterruptedException e) {
            System.out.println("Прерывание");
         }
      }
   }
}
// споры о короне Средиземья
public class Mag {
   String name;
   int strenght;

   Mag(String name, int strenght) {
      this.name = name;
      this.strenght = strenght;
   }

   public static void main(String[] args) {

      Elf elf = new Elf("Элайн", 100);
      Troll troll = new Troll("Зузя", 100);
      Mag mag = new Mag("Дамблдор", 100);

      Thread t1 = new Thread(elf);
      Thread t2 = new Thread(troll);
      t1.start();
      t2.start();
      for (int i = 0; i < 4; i++) {
         try {
            Thread.sleep(350);
            System.out.println(mag.name + " Белла королева Средиземья");
         } catch (InterruptedException e) {
            System.out.println("Прерывание");
         }
      }
   }
}
public class Troll implements Runnable {
   String name;
   int strenght;

   Troll(String name, int strenght) {
      this.name = name;
      this.strenght = strenght;
   }

   public void run() {
      for (int i = 0; i < 3; i++) {
         try {
            Thread.sleep(433);
            System.out.println(name + " Ричард король Средиземья");
         } catch (InterruptedException e) {
            System.out.println("Прерывание");
         }
      }
   }
}

Ответ:

Элайн Артур король Средиземья
Дамблдор Белла королева Средиземья
Элайн Артур король Средиземья
Зузя Ричард король Средиземья
Элайн Артур король Средиземья
Дамблдор Белла королева Средиземья
Элайн Артур король Средиземья
Зузя Ричард король Средиземья
Элайн Артур король Средиземья
Дамблдор Белла королева Средиземья
Элайн Артур король Средиземья
Зузя Ричард король Средиземья
Дамблдор Белла королева Средиземья

Задача 243: Ведьмы Крыся и Гадя колдуют вместе на шабаше.

// Колдуньи колдуют на шабаше одновременно разными заклинаниями
public class Hag implements Runnable {
   String name;

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

   public static void main(String[] args) {
      Hag hag1 = new Hag("Крыся");
      Hag hag2 = new Hag("Гадя");
      Thread t1 = Thread.currentThread();
      t1.setName("-заклинания колдуньи 1-");
      Thread t2 = new Thread(hag2);
      t2.start();
      for (int i = 0; i < 4; i++) {
         try {
            Thread.sleep(150);
            System.out.print(hag1.name + " " + t1.getName() + " ");
            System.out.println("Тата-туту");
         } catch (InterruptedException e) {
            System.out.println("Прерывание");
         }
      }
   }

   public void run() {
      Thread t = Thread.currentThread();
      t.setName("-заклинание колдуньи 2-");
      for (int i = 0; i < 3; i++) {
         try {
            Thread.sleep(200);
            System.out.print(name + " " + t.getName() + " ");
            System.out.println("Трам-трум");
         } catch (InterruptedException e) {
            System.out.println("Прерывание");
         }
      }
   }
}

Возможный ответ:

Крыся -заклинания колдуньи 1- Тата-туту
Гадя -заклинание колдуньи 2- Трам-трум
Крыся -заклинания колдуньи 1- Тата-туту
Гадя -заклинание колдуньи 2- Трам-трум
Крыся -заклинания колдуньи 1- Тата-туту
Крыся -заклинания колдуньи 1- Гадя -заклинание колдуньи 2- Трам-трум
Тата-туту

Задача 244: Три эльфа одновременно стреляют из луков в мишень.

// Эльфы стреляют из луков
public class Main {
   public static void main(String[] args) {
      Elf elf1 = new Elf("Элайн");
      Elf elf2 = new Elf("Элиот");
      Elf elf3 = new Elf("Элот");
   }
}
// Эльфы стреляют из луков
public class Elf implements Runnable {
   String name;
   Thread t;

   Elf(String name) {
      this.name = name;
      t = new Thread(this);
      t.start();
   }

   public void run() {
      for (int i = 0; i < 3; i++) {
         try {
            Thread.sleep(200);
            System.out.println(name + " стреляет-" + target());
         } catch (InterruptedException e) {
            System.out.println("Прерывание");
         }
      }
   }

   public int target() {
      int aim = (int) (Math.random() * 11);
      return aim;
   }
}

Возможный ответ:

Элот стреляет-10
Элайн стреляет-1
Элиот стреляет-3
Элайн стреляет-6
Элиот стреляет-4
Элот стреляет-2
Элайн стреляет-8
Элиот стреляет-4
Элот стреляет-8

Задача 245: Три эльфа одновременно стреляют из луков в мишень.

// Эльфы стреляют из луков
public class Elf implements Runnable {
   String name;
   Thread t;

   Elf(String name) {
      this.name = name;
      t = new Thread(this);
      t.start();
   }

   public void run() {
      for (int i = 0; i < 3; i++) {
         try {
            Thread.sleep(200);
            System.out.println(name + " стреляет-" + target());
         } catch (InterruptedException e) {
            System.out.println("Прерывание");
         }
      }
   }

   public int target() {
      int aim = (int) (Math.random() * 11);
      return aim;
   }
}
// Эльфы стреляют из луков
public class Main {
   public static void main(String[] args) {
      Elf elf1 = new Elf("Элайн");
      Elf elf2 = new Elf("Элиот");
      Elf elf3 = new Elf("Элот");
   }
}

Возможный ответ:

Элот стреляет-10
Элайн стреляет-1
Элиот стреляет-3
Элайн стреляет-6
Элиот стреляет-4
Элот стреляет-2
Элайн стреляет-8
Элиот стреляет-4
Элот стреляет-8

Задача 246: Эльф и орк соревнуются: кто первый поднимется на 5 этаж.

public class Main {

   public static void main(String[] args) throws InterruptedException {
      String winner = "";
      String loser = "";
      String stroka1 = " поднялся на 5 этаж";
      String stroka2 = "Победу одержал ";
      Elf elf = new Elf("Элиот");
      Orc orc = new Orc("Брут");
      Thread t1 = new Thread(elf);
      t1.start();
      Thread t2 = new Thread(orc);
      t2.start();
      t1.join();
      if (t2.isAlive()) {
         winner = elf.name;
         loser = orc.name;
      } else {
         winner = orc.name;
         loser = elf.name;
      }
      t2.join();
      System.out.println(winner + stroka1);
      System.out.println(loser + stroka1);
      System.out.println(stroka2 + winner);
   }
}
public class Orc implements Runnable {
   String name;

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

   public void run() {
      for (int i = 0; i < 4; i++) {
         try {
            Thread.sleep(150);
            System.out.println(name + " поднялся на " + (i + 1) + " этаж");
         } catch (InterruptedException e) {
            System.out.println("Прерывание");
         }
      }
   }
}
public class Elf implements Runnable {
   String name;

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

   public void run() {
      for (int i = 0; i < 4; i++) {
         try {
            Thread.sleep(150);
            System.out.println(name + " поднялся на " + (i + 1) + " этаж");
         } catch (InterruptedException e) {
            System.out.println("Прерывание");
         }
      }
   }
}

Возможный ответ:

Брут поднялся на 1 этаж
Элиот поднялся на 1 этаж
Брут поднялся на 2 этаж
Элиот поднялся на 2 этаж
Брут поднялся на 3 этаж
Элиот поднялся на 3 этаж
Элиот поднялся на 4 этаж
Брут поднялся на 4 этаж
Элиот поднялся на 5 этаж
Брут поднялся на 5 этаж
Победу одержал Элиот

Задача 247: Эльф и орк соревнуются: кто первый поднимется на 5 этаж.

public class Orc implements Runnable {
   String name;

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

   public void run() {
      for (int i = 1; i < 5; i++) {
         try {
            Thread.sleep(150);
            System.out.println(name + " поднялся на " + i + " этаж");
         } catch (InterruptedException e) {
            System.out.println("Прерывание");
         }
      }
   }
}
public class Main {

   public static void main(String[] args) throws InterruptedException {
      String winner = "";
      String loser = "";
      String stroka1 = " поднялся на 5 этаж";
      String stroka2 = "Победу одержал ";
      Elf elf = new Elf("Элиот");
      Orc orc = new Orc("Брут");
      Thread t1 = new Thread(elf);
      Thread t2 = new Thread(orc);
      t1.start();
      t2.start();
      t1.join();
      if (t2.isAlive()) {
         winner = elf.name;
         loser = orc.name;
      } else {
         winner = orc.name;
         loser = elf.name;
      }
      t2.join();
      System.out.println(winner + stroka1);
      System.out.println(loser + stroka1);
      System.out.println(stroka2 + winner);
   }
}
public class Elf implements Runnable {
   String name;

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

   public void run() {
      for (int i = 0; i < 4; i++) {
         try {
            Thread.sleep(150);
            System.out.println(name + " поднялся на " + (i + 1) + " этаж");
         } catch (InterruptedException e) {
            System.out.println("Прерывание");
         }
      }
   }
}

Возможный ответ:

Брут поднялся на 1 этаж
Элиот поднялся на 1 этаж
Брут поднялся на 2 этаж
Элиот поднялся на 2 этаж
Брут поднялся на 3 этаж
Элиот поднялся на 3 этаж
Элиот поднялся на 4 этаж
Брут поднялся на 4 этаж
Элиот поднялся на 5 этаж
Брут поднялся на 5 этаж
Победу одержал Элиот

Задача 248: Феи соревнуются, кто первый соберет 4 стакана волшебной пыльцы.

// феи соревнуются, кто больше наберет волшебной пыльцы
public class Fay implements Runnable {

   String name;
   static String strokaSbor = " насобирала стакан волшебной пыльцы ";

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

   public static void main(String[] args) {

      String winner = "";
      Fay fay1 = new Fay("Наташа");
      Thread f1 = new Thread(fay1);
      f1.start();
      Fay fay2 = new Fay("Лиза");
      Thread f2 = new Thread(fay2);
      f2.start();
      try {
         f1.join();
      } catch (InterruptedException e) {
         System.out.println("Прерывание");
      }
      if (f2.isAlive()) {
         winner = fay1.name;
      } else {
         winner = fay2.name;
      }

      try {
         f2.join();
      } catch (InterruptedException e) {
         System.out.println("Прерывание");
      }
      System.out.println("Фея " + winner + Fay.strokaSbor + 4);
      System.out.println("Фея " + winner + " победила");
   };

   public void run() {
      for (int i = 1; i < 4; i++) {
         try {
            Thread.sleep(100);
         } catch (InterruptedException e) {
            System.out.println("Прерывание");
         }
         System.out.println("Фея " + name + strokaSbor + i);
      }
   }
}

Возможный ответ:

Фея Наташа насобирала стакан волшебной пыльцы 1
Фея Лиза насобирала стакан волшебной пыльцы 1
Фея Лиза насобирала стакан волшебной пыльцы 2
Фея Наташа насобирала стакан волшебной пыльцы 2
Фея Лиза насобирала стакан волшебной пыльцы 3
Фея Наташа насобирала стакан волшебной пыльцы 3
Фея Лиза насобирала стакан волшебной пыльцы 4
Фея Лиза победила

Задача 249: Король Артур и Ричард соревнуются, кто быстрее наденет доспехи.

// Артур и Ричард одевают доспехи на скорость
public class Main {
   public static void main(String[] args) throws InterruptedException {

      String winner = "";
      King king1 = new King("Артур");
      King king2 = new King("Ричард");

      king1.t.join();
      if (king2.t.isAlive()) {
         winner = king1.name;
      } else {
         winner = king2.name;
      }
      king2.t.join();
      System.out.println("Король " + winner + " победил");
   }
}
// Артур и Ричард одевают доспехи на скорость
public class King implements Runnable {

   Thread t;
   String name;
   static String stroka = " надел доспехи за ";

   King(String name) {
      this.name = name;
      t = new Thread(this);
      t.start();
   }

   public void run() {
      int t = intTime();
      try {
         Thread.sleep(t * 50);
      } catch (InterruptedException e) {
         System.out.println("Прерывание");
      }
      System.out.println("Король " + name + stroka + t + " минут");
   }

   private int intTime() {
      int g = (int) (Math.random() * 10) + 10;
      return g;
   }
}

Возможный ответ:

Король Ричард надел доспехи за 14 минут
Король Артур надел доспехи за 17 минут
Король Ричард победил

Введите свой email адрес для того, чтобы подписаться на мой блог:


knopkisoc

Добавить комментарий