├── .gitignore ├── README.md ├── license.txt └── src └── com └── javarush └── test ├── level02 └── lesson08 │ ├── task03 │ └── Solution.java │ ├── task04 │ └── Solution.java │ ├── task05 │ └── Solution.java │ └── task06 │ └── Solution.java ├── level03 ├── lesson04 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java ├── lesson06 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java ├── lesson08 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java └── lesson12 │ ├── home01 │ └── Solution.java │ ├── home02 │ └── Solution.java │ └── home03 │ └── Solution.java ├── level04 ├── lesson02 │ ├── task01 │ │ └── Cat.java │ ├── task02 │ │ └── Cat.java │ ├── task03 │ │ └── Cat.java │ ├── task04 │ │ └── Cat.java │ └── task05 │ │ └── Solution.java ├── lesson06 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ ├── task05 │ │ └── Solution.java │ └── task06 │ │ └── Solution.java ├── lesson10 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java ├── lesson13 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java └── lesson16 │ ├── home01 │ └── Solution.java │ ├── home02 │ └── Solution.java │ ├── home03 │ └── Solution.java │ └── home04 │ └── Solution.java ├── level05 ├── lesson05 │ ├── task01 │ │ └── Cat.java │ ├── task02 │ │ └── Cat.java │ ├── task03 │ │ └── Dog.java │ ├── task04 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java ├── lesson07 │ ├── task01 │ │ └── Friend.java │ ├── task02 │ │ └── Cat.java │ ├── task03 │ │ └── Dog.java │ ├── task04 │ │ └── Circle.java │ └── task05 │ │ └── Rectangle.java ├── lesson09 │ ├── task01 │ │ └── Friend.java │ ├── task02 │ │ └── Cat.java │ ├── task03 │ │ └── Dog.java │ ├── task04 │ │ └── Circle.java │ └── task05 │ │ └── Rectangle.java └── lesson12 │ ├── bonus01 │ └── Solution.java │ ├── bonus02 │ └── Solution.java │ ├── bonus03 │ └── Solution.java │ ├── home01 │ └── Solution.java │ ├── home02 │ └── Solution.java │ ├── home03 │ └── Solution.java │ ├── home04 │ └── Solution.java │ └── home05 │ └── Solution.java ├── level06 ├── lesson05 │ ├── task01 │ │ └── Cat.java │ ├── task02 │ │ └── Cat.java │ ├── task03 │ │ └── Solution.java │ └── task04 │ │ └── Cat.java ├── lesson08 │ ├── task01 │ │ └── Cat.java │ ├── task02 │ │ └── Cat.java │ ├── task03 │ │ └── Util.java │ ├── task04 │ │ └── ConsoleReader.java │ └── task05 │ │ └── StringHelper.java └── lesson11 │ ├── bonus01 │ └── Solution.java │ ├── bonus02 │ └── Solution.java │ ├── bonus03 │ └── Solution.java │ ├── home01 │ └── Solution.java │ ├── home02 │ └── Cat.java │ ├── home03 │ └── Solution.java │ ├── home04 │ └── Solution.java │ ├── home05 │ └── Solution.java │ ├── home06 │ └── Solution.java │ └── home07 │ └── Solution.java ├── level07 ├── lesson04 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java ├── lesson06 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java ├── lesson09 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java └── lesson12 │ ├── bonus01 │ └── Solution.java │ ├── bonus02 │ └── Solution.java │ ├── bonus03 │ └── Solution.java │ ├── home01 │ └── Solution.java │ ├── home02 │ └── Solution.java │ ├── home03 │ └── Solution.java │ ├── home04 │ └── Solution.java │ ├── home05 │ └── Solution.java │ ├── home06 │ └── Solution.java │ └── home07 │ └── Solution.java ├── level08 ├── lesson03 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ ├── task05 │ │ └── Solution.java │ └── task06 │ │ └── Solution.java ├── lesson06 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java ├── lesson08 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java └── lesson11 │ ├── bonus01 │ └── Solution.java │ ├── bonus02 │ └── Solution.java │ ├── bonus03 │ └── Solution.java │ ├── home01 │ └── Solution.java │ ├── home02 │ └── Solution.java │ ├── home03 │ └── Solution.java │ ├── home04 │ └── Solution.java │ ├── home05 │ └── Solution.java │ ├── home06 │ └── Solution.java │ ├── home07 │ └── Solution.java │ ├── home08 │ └── Solution.java │ └── home09 │ └── Solution.java ├── level09 ├── lesson02 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java ├── lesson06 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java └── lesson11 │ ├── bonus01 │ └── Solution.java │ ├── bonus02 │ └── Solution.java │ ├── bonus03 │ └── Solution.java │ ├── home01 │ └── Solution.java │ ├── home02 │ └── Solution.java │ ├── home03 │ └── Solution.java │ ├── home04 │ └── Solution.java │ ├── home05 │ └── Solution.java │ ├── home06 │ └── Solution.java │ ├── home07 │ └── Solution.java │ ├── home08 │ └── Solution.java │ └── home09 │ └── Solution.java ├── level10 ├── lesson04 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java └── lesson11 │ ├── bonus01 │ └── Solution.java │ ├── bonus02 │ └── Solution.java │ ├── bonus03 │ └── Solution.java │ ├── home01 │ └── Solution.java │ ├── home02 │ └── Solution.java │ ├── home03 │ └── Solution.java │ ├── home04 │ └── Solution.java │ ├── home05 │ └── Solution.java │ ├── home06 │ └── Solution.java │ ├── home07 │ └── Solution.java │ ├── home08 │ └── Solution.java │ ├── home09 │ └── Solution.java │ └── home10 │ └── Solution.java ├── level11 ├── lesson06 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java ├── lesson08 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java └── lesson11 │ ├── bonus01 │ └── Solution.java │ ├── bonus02 │ └── Solution.java │ ├── bonus03 │ └── Solution.java │ ├── home01 │ └── Solution.java │ ├── home02 │ └── Solution.java │ ├── home03 │ └── Solution.java │ ├── home04 │ └── Solution.java │ ├── home05 │ └── Solution.java │ ├── home06 │ └── Solution.java │ ├── home07 │ └── Solution.java │ ├── home08 │ └── Solution.java │ ├── home09 │ └── Solution.java │ └── home10 │ └── Solution.java ├── level12 ├── lesson02 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java ├── lesson04 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java ├── lesson06 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java ├── lesson09 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java └── lesson12 │ ├── bonus01 │ └── Solution.java │ ├── bonus02 │ └── Solution.java │ ├── bonus03 │ └── Solution.java │ ├── home01 │ └── Solution.java │ ├── home02 │ └── Solution.java │ ├── home03 │ └── Solution.java │ ├── home04 │ └── Solution.java │ ├── home05 │ └── Solution.java │ ├── home06 │ └── Solution.java │ ├── home07 │ └── Solution.java │ ├── home08 │ └── Solution.java │ ├── home09 │ └── Solution.java │ └── home10 │ └── Solution.java ├── level13 ├── lesson02 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ ├── task05 │ │ └── Solution.java │ ├── task06 │ │ └── Solution.java │ ├── task07 │ │ └── Solution.java │ ├── task08 │ │ └── Solution.java │ ├── task09 │ │ └── Solution.java │ └── task10 │ │ └── Solution.java ├── lesson04 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ └── task04 │ │ └── Solution.java ├── lesson06 │ └── task01 │ │ └── Solution.java └── lesson11 │ ├── bonus01 │ └── Solution.java │ ├── bonus02 │ ├── Person.java │ ├── RepkaItem.java │ ├── RepkaStory.java │ └── Solution.java │ ├── bonus03 │ ├── AbstractRobot.java │ ├── Attackable.java │ ├── BodyPart.java │ ├── Defensable.java │ ├── Robot.java │ └── Solution.java │ ├── home01 │ └── Solution.java │ ├── home02 │ ├── Solution.java │ ├── Weather.java │ └── WeatherType.java │ ├── home03 │ └── Solution.java │ ├── home04 │ └── Solution.java │ ├── home05 │ └── Solution.java │ ├── home06 │ └── Solution.java │ ├── home07 │ └── Solution.java │ ├── home08 │ └── Solution.java │ ├── home09 │ └── Solution.java │ └── home10 │ └── Solution.java ├── level14 ├── lesson02 │ ├── task01 │ │ └── Solution.java │ └── task02 │ │ └── Solution.java ├── lesson04 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ └── task04 │ │ └── Solution.java ├── lesson06 │ └── home01 │ │ ├── BelarusianHen.java │ │ ├── Country.java │ │ ├── Hen.java │ │ ├── MoldovanHen.java │ │ ├── RussianHen.java │ │ ├── Solution.java │ │ └── UkrainianHen.java └── lesson08 │ ├── bonus01 │ └── Solution.java │ ├── bonus02 │ └── Solution.java │ ├── bonus03 │ ├── Singleton.java │ └── Solution.java │ ├── home01 │ ├── Bridge.java │ ├── Solution.java │ ├── SuspensionBridge.java │ └── WaterBridge.java │ ├── home02 │ ├── BubblyWine.java │ ├── Drink.java │ ├── Solution.java │ └── Wine.java │ ├── home03 │ ├── Person.java │ └── Solution.java │ ├── home04 │ └── Solution.java │ ├── home05 │ ├── CompItem.java │ ├── Computer.java │ ├── Keyboard.java │ ├── Monitor.java │ ├── Mouse.java │ └── Solution.java │ ├── home06 │ └── Solution.java │ ├── home07 │ └── Solution.java │ ├── home08 │ └── Solution.java │ ├── home09 │ ├── Hrivna.java │ ├── Money.java │ ├── Solution.java │ └── USD.java │ └── home10 │ └── Solution.java ├── level15 ├── lesson02 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java ├── lesson04 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java ├── lesson06 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ └── task03 │ │ └── Solution.java ├── lesson09 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java └── lesson12 │ ├── bonus01 │ ├── Flyable.java │ ├── Helicopter.java │ ├── Plane.java │ └── Solution.java │ ├── bonus03 │ └── Solution.java │ ├── home01 │ └── Solution.java │ ├── home02 │ └── Solution.java │ ├── home03 │ ├── Solution.java │ └── Tree.java │ ├── home04 │ ├── Earth.java │ ├── Moon.java │ ├── Planet.java │ ├── Solution.java │ └── Sun.java │ ├── home05 │ ├── Solution.java │ └── SubSolution.java │ ├── home06 │ └── Solution.java │ ├── home07 │ ├── Constants.java │ └── Solution.java │ ├── home08 │ └── Solution.java │ ├── home09 │ └── Solution.java │ └── home10 │ └── Solution.java ├── level16 ├── lesson03 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java ├── lesson05 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java ├── lesson07 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java ├── lesson10 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java └── lesson13 │ ├── bonus01 │ ├── ImageReaderFactory.java │ ├── Solution.java │ └── common │ │ ├── BmpReader.java │ │ ├── ImageReader.java │ │ ├── ImageTypes.java │ │ ├── JpgReader.java │ │ └── PngReader.java │ ├── bonus02 │ ├── Message.java │ └── Solution.java │ ├── bonus03 │ └── Solution.java │ ├── home01 │ └── Solution.java │ ├── home02 │ └── Solution.java │ ├── home03 │ └── Solution.java │ ├── home04 │ └── Solution.java │ ├── home05 │ └── Solution.java │ ├── home06 │ └── Solution.java │ ├── home07 │ └── Solution.java │ ├── home08 │ └── Solution.java │ ├── home09 │ └── Solution.java │ └── home10 │ └── Solution.java ├── level17 ├── lesson02 │ ├── task01 │ │ └── Solution.java │ └── task02 │ │ └── Solution.java ├── lesson04 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java ├── lesson06 │ ├── task01 │ │ └── Solution.java │ └── task02 │ │ └── Solution.java └── lesson10 │ ├── bonus01 │ ├── Person.java │ ├── Sex.java │ └── Solution.java │ ├── bonus02 │ ├── Person.java │ ├── Sex.java │ └── Solution.java │ ├── bonus03 │ ├── Cook.java │ ├── Dishes.java │ ├── Manager.java │ ├── Order.java │ ├── Restaurant.java │ ├── Table.java │ └── Waiter.java │ ├── home01 │ └── Solution.java │ ├── home02 │ └── Beach.java │ ├── home03 │ ├── Drug.java │ ├── DrugsController.java │ └── Solution.java │ ├── home04 │ └── Solution.java │ ├── home05 │ └── Solution.java │ ├── home06 │ └── Solution.java │ ├── home07 │ ├── ApplicationContext.java │ └── Bean.java │ ├── home08 │ ├── BankAccount.java │ ├── Bankomat.java │ └── NotEnoughMoneyException.java │ ├── home09 │ ├── CorruptedDataException.java │ └── Solution.java │ └── home10 │ └── Solution.java ├── level18 ├── lesson03 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java ├── lesson05 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java ├── lesson08 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ ├── AmigoOutputStream.java │ │ └── QuestionFileOutputStream.java │ ├── task03 │ │ └── AmigoOutputStream.java │ ├── task04 │ │ ├── TxtInputStream.java │ │ └── UnsupportedFileNameException.java │ └── task05 │ │ └── Solution.java └── lesson10 │ ├── bonus01 │ └── Solution.java │ ├── bonus02 │ └── Solution.java │ ├── bonus03 │ └── Solution.java │ ├── home01 │ └── Solution.java │ ├── home02 │ └── Solution.java │ ├── home03 │ └── Solution.java │ ├── home04 │ └── Solution.java │ ├── home05 │ └── Solution.java │ ├── home06 │ └── Solution.java │ ├── home07 │ └── Solution.java │ ├── home08 │ └── Solution.java │ ├── home09 │ └── Solution.java │ └── home10 │ └── Solution.java ├── level19 ├── lesson03 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ ├── AdapterFileOutputStream.java │ │ └── AmigoStringWriter.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ ├── Person.java │ │ ├── PersonScanner.java │ │ └── Solution.java │ └── task05 │ │ └── Solution.java ├── lesson05 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java ├── lesson08 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java └── lesson10 │ ├── bonus01 │ └── Solution.java │ ├── bonus02 │ └── FileConsoleWriter.java │ ├── bonus03 │ └── Solution.java │ ├── home01 │ └── Solution.java │ ├── home02 │ └── Solution.java │ ├── home03 │ ├── Person.java │ └── Solution.java │ ├── home04 │ └── Solution.java │ ├── home05 │ └── Solution.java │ ├── home06 │ └── Solution.java │ ├── home07 │ └── Solution.java │ ├── home08 │ └── Solution.java │ ├── home09 │ └── Solution.java │ └── home10 │ └── Solution.java ├── level20 ├── lesson02 │ ├── task01 │ │ ├── Asset.java │ │ └── Solution.java │ ├── task02 │ │ ├── Solution.java │ │ └── User.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java ├── lesson04 │ ├── task01 │ │ ├── Asset.java │ │ └── Solution.java │ ├── task02 │ │ ├── Solution.java │ │ └── User.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java ├── lesson07 │ ├── task01 │ │ ├── Haha.java │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ ├── task03 │ │ └── Solution.java │ ├── task04 │ │ └── Solution.java │ └── task05 │ │ └── Solution.java └── lesson10 │ ├── bonus01 │ └── Solution.java │ ├── bonus02 │ └── Solution.java │ ├── bonus03 │ └── Solution.java │ ├── bonus04 │ └── Solution.java │ ├── home01 │ └── Solution.java │ ├── home02 │ └── Solution.java │ ├── home03 │ └── Solution.java │ ├── home04 │ └── Solution.java │ ├── home05 │ └── Solution.java │ ├── home06 │ └── Solution.java │ ├── home07 │ └── Solution.java │ ├── home08 │ └── Solution.java │ └── home09 │ └── Solution.java ├── level21 ├── lesson02 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ └── task03 │ │ └── Solution.java ├── lesson05 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ └── task03 │ │ └── Solution.java ├── lesson08 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ └── task03 │ │ └── Solution.java ├── lesson10 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ └── task03 │ │ └── Solution.java └── lesson16 │ └── big01 │ ├── Hippodrome.java │ ├── Horse.java │ └── Условие задачи.txt ├── level22 ├── lesson05 │ ├── home01 │ │ ├── Solution.java │ │ ├── Task.java │ │ ├── ThisUncaughtExceptionHandler.java │ │ ├── TooShortStringFirstThreadException.java │ │ └── TooShortStringSecondThreadException.java │ ├── task01 │ │ └── Solution.java │ └── task02 │ │ └── Solution.java ├── lesson07 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ └── task03 │ │ └── Solution.java ├── lesson09 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ └── task03 │ │ └── Solution.java ├── lesson13 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ └── task03 │ │ └── Solution.java └── lesson18 │ └── big01 │ ├── Field.java │ ├── Figure.java │ ├── FigureFactory.java │ ├── KeyboardObserver.java │ ├── Tetris.java │ └── Условие задачи.txt ├── level23 ├── lesson02 │ ├── task01 │ │ └── Solution.java │ ├── task02 │ │ └── Solution.java │ └── task03 │ │ └── Solution.java ├── lesson04 │ ├── home01 │ │ ├── DbMock.java │ │ ├── Solution.java │ │ └── ViewMock.java │ ├── task01 │ │ └── Solution.java │ └── task02 │ │ └── Solution.java ├── lesson06 │ ├── task01 │ │ └── Solution.java │ └── task02 │ │ └── Solution.java ├── lesson08 │ ├── home01 │ │ ├── AbstractDbSelectExecutor.java │ │ ├── Solution.java │ │ └── vo │ │ │ ├── Location.java │ │ │ ├── NamedItem.java │ │ │ ├── Server.java │ │ │ ├── Subject.java │ │ │ ├── Subscription.java │ │ │ └── User.java │ ├── task01 │ │ └── Solution.java │ └── task02 │ │ └── Solution.java └── lesson13 │ └── big01 │ ├── KeyboardObserver.java │ ├── Mouse.java │ ├── Room.java │ ├── Snake.java │ ├── SnakeDirection.java │ ├── SnakeSection.java │ └── Условие задачи.txt ├── level24 ├── lesson02 │ ├── home01 │ │ ├── SelfInterfaceMarker.java │ │ ├── SelfInterfaceMarkerImpl.java │ │ ├── Solution.java │ │ ├── UnsupportedInterfaceMarkerException.java │ │ └── Util.java │ ├── task01 │ │ └── Solution.java │ └── task02 │ │ └── Solution.java ├── lesson04 │ ├── home01 │ │ ├── HasHeight.java │ │ ├── HasWidth.java │ │ ├── Point.java │ │ └── Solution.java │ ├── home02 │ │ ├── Action.java │ │ ├── FirstClass.java │ │ ├── SecondClass.java │ │ └── Solution.java │ └── task01 │ │ └── Solution.java ├── lesson06 │ ├── home01 │ │ ├── Cat.java │ │ ├── Mouse.java │ │ ├── Pet.java │ │ ├── Sayable.java │ │ ├── Solution.java │ │ └── Util.java │ ├── home02 │ │ ├── Dog.java │ │ ├── Mouse.java │ │ ├── Pet.java │ │ ├── Sayable.java │ │ ├── Solution.java │ │ ├── SuperDog.java │ │ └── Util.java │ └── home03 │ │ ├── Solution.java │ │ └── Util.java ├── lesson09 │ ├── home01 │ │ ├── Iterator.java │ │ └── Solution.java │ ├── task01 │ │ └── Solution.java │ └── task02 │ │ └── Solution.java └── lesson14 │ └── big01 │ ├── Arcanoid.java │ ├── Ball.java │ ├── BaseObject.java │ ├── Brick.java │ ├── Canvas.java │ ├── KeyboardObserver.java │ ├── Stand.java │ └── Условие задачи.txt ├── level25 ├── lesson02 │ ├── home01 │ │ ├── Column.java │ │ ├── Columnable.java │ │ └── Solution.java │ ├── task01 │ │ └── Solution.java │ └── task02 │ │ └── Solution.java ├── lesson05 │ ├── home01 │ │ ├── LoggingStateThread.java │ │ └── Solution.java │ ├── task01 │ │ └── Solution.java │ └── task02 │ │ └── Solution.java ├── lesson07 │ ├── home01 │ │ ├── CustomThreadManipulator.java │ │ ├── Solution.java │ │ └── TaskManipulator.java │ ├── home02 │ │ ├── CancellableTask.java │ │ ├── SocketTask.java │ │ └── Solution.java │ └── task01 │ │ └── Solution.java ├── lesson09 │ ├── task01 │ │ ├── Solution.java │ │ └── Test.java │ ├── task02 │ │ └── Solution.java │ └── task03 │ │ └── Solution.java ├── lesson11 │ ├── task01 │ │ └── Solution.java │ └── task02 │ │ └── Solution.java └── lesson16 │ └── big01 │ ├── BaseObject.java │ ├── Bomb.java │ ├── Canvas.java │ ├── KeyboardObserver.java │ ├── Rocket.java │ ├── Space.java │ ├── SpaceShip.java │ ├── Ufo.java │ └── Условие задачи.txt └── level26 ├── lesson02 ├── task01 │ └── Solution.java ├── task02 │ └── Solution.java └── task03 │ └── Solution.java ├── lesson05 ├── task01 │ └── Solution.java ├── task02 │ └── Solution.java └── task03 │ └── Solution.java ├── lesson08 ├── task01 │ └── Solution.java ├── task02 │ └── Solution.java └── task03 │ └── Solution.java ├── lesson10 ├── home01 │ ├── Consumer.java │ ├── Producer.java │ └── Solution.java ├── home02 │ ├── Consumer.java │ ├── Producer.java │ └── Solution.java └── task01 │ └── Solution.java └── lesson15 └── big01 ├── CashMachine.java ├── ConsoleHelper.java ├── CurrencyManipulator.java ├── CurrencyManipulatorFactory.java ├── Operation.java ├── command ├── Command.java ├── CommandExecutor.java ├── DepositCommand.java ├── ExitCommand.java ├── InfoCommand.java ├── LoginCommand.java └── WithdrawCommand.java ├── exception ├── InterruptOperationException.java └── NotEnoughMoneyException.java ├── resources ├── common_en.properties ├── deposit_en.properties ├── exit_en.properties ├── info_en.properties ├── login_en.properties ├── verifiedCards.properties └── withdraw_en.properties └── Условие задачи.txt /.gitignore: -------------------------------------------------------------------------------- 1 | # Created by .ignore support plugin (hsz.mobi) 2 | ### Example user template template 3 | ### Example user template 4 | 5 | # IntelliJ project files 6 | .idea/* 7 | *.iml 8 | out 9 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

My coursework at JavaRush

2 | 3 | JavaRush is a game-like course on training Java Core skills. 4 | 5 | For the moment I made my last commit maximum level was 26 and I had reached that limit. 6 | 7 | *You can learn more about this course at https://javarush.com/en/ .* 8 | 9 | -------------------------------------------------------------------------------- /src/com/javarush/test/level02/lesson08/task03/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level02.lesson08.task03; 2 | 3 | /* Минимум трех чисел 4 | Написать функцию, которая вычисляет минимум из трёх чисел. 5 | */ 6 | class Solution { 7 | 8 | @SuppressWarnings("unused") 9 | public static int min(int a, int b, int c) { 10 | int m1; 11 | if (a < b && a < c) { 12 | m1 = a; 13 | } else if (b < a && b < c) { 14 | m1 = b; 15 | } else { 16 | m1 = c; 17 | } 18 | return m1; 19 | } 20 | } -------------------------------------------------------------------------------- /src/com/javarush/test/level02/lesson08/task04/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level02.lesson08.task04; 2 | 3 | /* Минимум четырех чисел 4 | Написать функцию, которая вычисляет минимум из четырёх чисел. 5 | Использовать функцию из задачи 1. 6 | */ 7 | @SuppressWarnings("WeakerAccess") 8 | class Solution { 9 | 10 | public static int min(int a, int b, int c, int d) { 11 | int mainMin; 12 | int m2 = min(a, b); 13 | int m3 = min(c, d); 14 | if (m2 < m3) { 15 | mainMin = m2; 16 | } else { 17 | mainMin = m3; 18 | } 19 | return mainMin; 20 | } 21 | 22 | private static int min(int a, int b) { 23 | int m1; 24 | if (a < b) { 25 | m1 = a; 26 | } else { 27 | m1 = b; 28 | } 29 | return m1; 30 | 31 | } 32 | } -------------------------------------------------------------------------------- /src/com/javarush/test/level02/lesson08/task05/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level02.lesson08.task05; 2 | 3 | class Solution { 4 | 5 | public static void print3(String s) { 6 | System.out.println(s); 7 | System.out.println(s); 8 | System.out.println(s); 9 | } 10 | } -------------------------------------------------------------------------------- /src/com/javarush/test/level02/lesson08/task06/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level02.lesson08.task06; 2 | 3 | /* Вывод текста на экран 4 | Написать функцию, которая выводит переданную строку (слово) на экран три раза, но в одной строке. 5 | Слова должны быть разделены пробелом и не должны сливаться в одно. 6 | */ 7 | class Solution { 8 | 9 | public static void print3(String s) { 10 | System.out.print(s + " "); 11 | System.out.print(s + " "); 12 | System.out.print(s); 13 | } 14 | } -------------------------------------------------------------------------------- /src/com/javarush/test/level03/lesson04/task01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level03.lesson04.task01; 2 | 3 | /* Дата рождения 4 | Вывести на экран дату своего рождения в виде: MAY 1 2012 5 | */ 6 | 7 | class Solution { 8 | 9 | public static void main(String[] args) { 10 | System.out.println("MAY 1 2012"); 11 | 12 | } 13 | } -------------------------------------------------------------------------------- /src/com/javarush/test/level03/lesson04/task03/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level03.lesson04.task03; 2 | 3 | /* Бендер мой любимый учитель 4 | Вывести на экран 'Бендер мой любимый учитель' 1 раз. 5 | */ 6 | 7 | class Solution { 8 | 9 | public static void main(String[] args) { 10 | System.out.println("Бендер мой любимый учитель"); 11 | } 12 | } -------------------------------------------------------------------------------- /src/com/javarush/test/level03/lesson04/task04/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level03.lesson04.task04; 2 | 3 | /* Произведение 10 чисел 4 | Вывести на экран произведение 10 чисел от 1 до 10. Результат - 1 число. 5 | Подсказка: будет три миллиона с хвостиком. 6 | */ 7 | 8 | class Solution { 9 | 10 | public static void main(String[] args) { 11 | System.out.println(2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10); 12 | } 13 | } -------------------------------------------------------------------------------- /src/com/javarush/test/level03/lesson04/task05/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level03.lesson04.task05; 2 | 3 | /* Сумма 10 чисел 4 | Вывести на экран сумму чисел от 1 до 10 построчно (должно быть 10 строк): 5 | 1 6 | 1+2=3 7 | 1+2+3=6 8 | 1+2+3+4=10 9 | ... 10 | Пример вывода: 11 | 1 12 | 3 13 | 6 14 | 10 15 | ... 16 | */ 17 | 18 | class Solution { 19 | 20 | public static void main(String[] args) { 21 | System.out.println(1); 22 | System.out.println(1 + 2); 23 | System.out.println(1 + 2 + 3); 24 | System.out.println(1 + 2 + 3 + 4); 25 | System.out.println(1 + 2 + 3 + 4 + 5); 26 | System.out.println(1 + 2 + 3 + 4 + 5 + 6); 27 | System.out.println(1 + 2 + 3 + 4 + 5 + 6 + 7); 28 | System.out.println(1 + 2 + 3 + 4 + 5 + 6 + 7 + 8); 29 | System.out.println(1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9); 30 | System.out.println(1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10); 31 | 32 | } 33 | } -------------------------------------------------------------------------------- /src/com/javarush/test/level03/lesson06/task01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level03.lesson06.task01; 2 | 3 | /* Мама мыла раму 4 | Вывести на экран все возможные комбинации слов «Мама», «Мыла», «Раму». 5 | Подсказка: их 6 штук. Каждую комбинацию вывести с новой строки. Слова не разделять. Пример: 6 | МылаРамуМама 7 | РамуМамаМыла 8 | ... 9 | */ 10 | 11 | class Solution { 12 | 13 | public static void main(String[] args) { 14 | String s1 = "Мама"; 15 | String s2 = "Мыла"; 16 | String s3 = "Раму"; 17 | System.out.println(s1 + s2 + s3); 18 | System.out.println(s1 + s3 + s2); 19 | System.out.println(s2 + s1 + s3); 20 | System.out.println(s2 + s3 + s1); 21 | System.out.println(s3 + s1 + s2); 22 | System.out.println(s3 + s2 + s1); 23 | 24 | } 25 | } -------------------------------------------------------------------------------- /src/com/javarush/test/level03/lesson06/task02/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level03.lesson06.task02; 2 | 3 | /* Таблица умножения 4 | Выведи на экран надпись: таблицу умножения 10 на 10: 5 | 1 2 3 … 6 | 2 4 6 … 7 | 3 6 9 … 8 | … 9 | */ 10 | 11 | class Solution { 12 | 13 | public static void main(String[] args) { 14 | System.out.println("1 2 3 4 5 6 7 8 9 10"); 15 | System.out.println("2 4 6 8 10 12 14 16 18 20"); 16 | System.out.println("3 6 9 12 15 18 21 24 27 30"); 17 | System.out.println("4 8 12 16 20 24 28 32 36 40"); 18 | System.out.println("5 10 15 20 25 30 35 40 45 50"); 19 | System.out.println("6 12 18 24 30 36 42 48 54 60"); 20 | System.out.println("7 14 21 28 35 42 49 56 63 70"); 21 | System.out.println("8 16 24 32 40 48 56 64 72 80"); 22 | System.out.println("9 18 27 36 45 54 63 72 81 90"); 23 | System.out.println("10 20 30 40 50 60 70 80 90 100"); 24 | 25 | } 26 | } -------------------------------------------------------------------------------- /src/com/javarush/test/level03/lesson06/task03/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level03.lesson06.task03; 2 | 3 | /* Семь цветов радуги 4 | Выведи на экран текст: семь цветов радуги. 5 | В каждой строке должно быть по три цвета, в последней - один. 6 | Цвета разделяй пробелом. 7 | */ 8 | 9 | class Solution { 10 | 11 | public static void main(String[] args) { 12 | System.out.println("красный оранжевый желтый"); 13 | System.out.println("зеленый голубой синий"); 14 | System.out.println("фиолетовый"); 15 | } 16 | } -------------------------------------------------------------------------------- /src/com/javarush/test/level03/lesson06/task04/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level03.lesson06.task04; 2 | 3 | /* Путь к файлу java.exe 4 | Выведи на экран текст: полное имя файла java.exe из установленного пакета java 5 | */ 6 | 7 | class Solution { 8 | 9 | public static void main(String[] args) { 10 | System.out.println("C:\\Program Files\\Java\\jdk1.7.0_51\\bin\\java.exe"); 11 | 12 | } 13 | } -------------------------------------------------------------------------------- /src/com/javarush/test/level03/lesson06/task05/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level03.lesson06.task05; 2 | 3 | /* Изучаем японский 4 | Выведи на экран 日本語 5 | */ 6 | 7 | class Solution { 8 | 9 | public static void main(String[] args) { 10 | System.out.println("日本語"); 11 | } 12 | } -------------------------------------------------------------------------------- /src/com/javarush/test/level03/lesson08/task01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level03.lesson08.task01; 2 | 3 | /* Как захватить мир 4 | Ввести с клавиатуры число и имя, вывести на экран строку: 5 | «имя» захватит мир через «число» лет. Му-ха-ха! 6 | Пример: Вася захватит мир через 8 лет. Му-ха-ха! 7 | */ 8 | 9 | import java.io.BufferedReader; 10 | import java.io.InputStreamReader; 11 | 12 | 13 | class Solution { 14 | 15 | public static void main(String[] args) throws Exception { 16 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 17 | String tempAge = br.readLine(); 18 | String name = br.readLine(); 19 | int age = Integer.parseInt(tempAge); 20 | System.out.println(name + " захватит мир через " + age + " лет. Му-ха-ха!"); 21 | } 22 | } -------------------------------------------------------------------------------- /src/com/javarush/test/level03/lesson08/task02/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level03.lesson08.task02; 2 | 3 | /* Зарплата через 5 лет 4 | Ввести с клавиатуры Имя и два числа, вывести надпись: 5 | name1 получает «число1» через «число2» лет. 6 | Пример: Коля получает 3000 через 5 лет. 7 | */ 8 | 9 | import java.util.Scanner; 10 | 11 | class Solution { 12 | 13 | public static void main(String[] args) { 14 | Scanner s = new Scanner(System.in); 15 | String name = s.nextLine(); 16 | int num1 = s.nextInt(); 17 | int num2 = s.nextInt(); 18 | System.out.println(name + " получает " + num1 + " через " + num2 + " лет."); 19 | } 20 | } -------------------------------------------------------------------------------- /src/com/javarush/test/level03/lesson08/task03/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level03.lesson08.task03; 2 | 3 | /* Скромность украшает человека 4 | Ввести с клавиатуры имя и вывести надпись: 5 | name зарабатывает $5,000. Ха-ха-ха! 6 | Пример: Тимур зарабатывает $5,000. Ха-ха-ха! 7 | */ 8 | 9 | import java.io.BufferedReader; 10 | import java.io.InputStreamReader; 11 | 12 | class Solution { 13 | 14 | public static void main(String[] args) throws Exception { 15 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 16 | String name = br.readLine(); 17 | System.out.println(name + " зарабатывает $5,000. Ха-ха-ха!"); 18 | } 19 | } -------------------------------------------------------------------------------- /src/com/javarush/test/level03/lesson08/task04/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level03.lesson08.task04; 2 | 3 | /* Спонсор - это звучит гордо 4 | Ввести с клавиатуры два имени и вывести надпись: 5 | name1 проспонсировал name2 и она стала известной певицей. 6 | Пример: Коля проспонсировал Лену, и она стала известной певицей. 7 | */ 8 | 9 | import java.io.BufferedReader; 10 | import java.io.InputStreamReader; 11 | 12 | class Solution { 13 | 14 | public static void main(String[] args) throws Exception { 15 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 16 | String name1 = br.readLine(); 17 | String name2 = br.readLine(); 18 | System.out.println(name1 + " проспонсировал " + name2 + ", и она стала известной певицей."); 19 | } 20 | } -------------------------------------------------------------------------------- /src/com/javarush/test/level03/lesson08/task05/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level03.lesson08.task05; 2 | 3 | /* Чистая любовь 4 | Ввести с клавиатуры три имени, вывести на экран надпись: 5 | name1 + name2 + name3 = Чистая любовь, да-да! 6 | Пример: Вася + Ева + Анжелика = Чистая любовь, да-да! 7 | */ 8 | 9 | import java.io.BufferedReader; 10 | import java.io.InputStreamReader; 11 | 12 | class Solution { 13 | 14 | public static void main(String[] args) throws Exception { 15 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 16 | String name1 = br.readLine(); 17 | String name2 = br.readLine(); 18 | String name3 = br.readLine(); 19 | System.out.println(name1 + " + " + name2 + " + " + name3 + " = Чистая любовь, да-да!"); 20 | } 21 | } -------------------------------------------------------------------------------- /src/com/javarush/test/level03/lesson12/home01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level03.lesson12.home01; 2 | 3 | /* Жить хорошо, а хорошо жить еще лучше 4 | Вывести на экран надпись «Жить хорошо, а хорошо жить еще лучше» 5 | */ 6 | 7 | class Solution { 8 | 9 | public static void main(String[] args) { 10 | System.out.println("Жить хорошо, а хорошо жить еще лучше"); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/com/javarush/test/level03/lesson12/home02/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level03.lesson12.home02; 2 | 3 | /* Я не хочу изучать Java, я хочу большую зарплату 4 | Вывести на экран десять раз надпись «Я не хочу изучать Java, я хочу большую зарплату» 5 | */ 6 | 7 | class Solution { 8 | 9 | public static void main(String[] args) { 10 | String s = "Я не хочу изучать Java, я хочу большую зарплату"; 11 | System.out.println(s); 12 | System.out.println(s); 13 | System.out.println(s); 14 | System.out.println(s); 15 | System.out.println(s); 16 | System.out.println(s); 17 | System.out.println(s); 18 | System.out.println(s); 19 | System.out.println(s); 20 | System.out.println(s); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/com/javarush/test/level03/lesson12/home03/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level03.lesson12.home03; 2 | 3 | /* Я буду зарабатывать $50 в час 4 | Ввести с клавиатуры число n. 5 | Вывести на экран надпись «Я буду зарабатывать $n в час». 6 | Пример: 7 | Я буду зарабатывать $50 в час 8 | */ 9 | 10 | import java.util.Scanner; 11 | 12 | class Solution { 13 | 14 | public static void main(String[] args) { 15 | Scanner s = new Scanner(System.in); 16 | int zp = s.nextInt(); 17 | System.out.println("Я буду зарабатывать $" + zp + " в час"); 18 | } 19 | } -------------------------------------------------------------------------------- /src/com/javarush/test/level04/lesson02/task01/Cat.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level04.lesson02.task01; 2 | 3 | /* Реализовать метод setName 4 | Реализовать метод setName, чтобы с его помощью можно было устанавливать значение переменной private String name равное переданному параметру String name. 5 | */ 6 | 7 | class Cat { 8 | 9 | @SuppressWarnings("FieldCanBeLocal") 10 | private String name; 11 | 12 | public void setName(String name) { 13 | this.name = name; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/com/javarush/test/level04/lesson02/task02/Cat.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level04.lesson02.task02; 2 | 3 | /* Реализовать метод addNewCat 4 | Реализовать метод addNewCat, чтобы при его вызове (т.е. добавлении нового кота), количество котов увеличивалось на 1. За количество котов отвечает переменная catsCount. 5 | */ 6 | 7 | class Cat { 8 | 9 | private static int catsCount = 0; 10 | 11 | public static void addNewCat() { 12 | catsCount++; 13 | 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/com/javarush/test/level04/lesson02/task03/Cat.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level04.lesson02.task03; 2 | 3 | /* Реализовать метод setCatsCount 4 | Реализовать метод setCatsCount так, чтобы с его помощью можно было устанавливать значение переменной catsCount равное переданному параметру. 5 | */ 6 | 7 | class Cat { 8 | 9 | private static int catsCount = 0; 10 | 11 | public static void setCatsCount(int catsCount) { 12 | Cat.catsCount = catsCount; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/com/javarush/test/level04/lesson02/task04/Cat.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level04.lesson02.task04; 2 | 3 | /* Реализовать метод setName 4 | Реализовать метод setName, чтобы с его помощью можно было устанавливать значение переменной private String fullName равное значению локальной переменной String fullName. 5 | */ 6 | 7 | class Cat { 8 | 9 | @SuppressWarnings("FieldCanBeLocal") 10 | private String fullName; 11 | 12 | public void setName(String firstName, String lastName) { 13 | this.fullName = firstName + " " + lastName; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/com/javarush/test/level04/lesson02/task05/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level04.lesson02.task05; 2 | 3 | /* Подсчитать количество котов 4 | Написать код, чтобы правильно считалось количество созданных котов (count) и на экран выдавалось правильно их количество. 5 | */ 6 | 7 | class Solution { 8 | 9 | public static void main(String[] args) { 10 | Cat cat1 = new Cat(); 11 | Cat.count++; 12 | Cat cat2 = new Cat(); 13 | Cat.count++; 14 | System.out.println("Cats count is " + Cat.count); 15 | } 16 | 17 | static class Cat { 18 | 19 | static int count = 0; 20 | } 21 | } -------------------------------------------------------------------------------- /src/com/javarush/test/level04/lesson06/task01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level04.lesson06.task01; 2 | 3 | /* Минимум двух чисел 4 | Ввести с клавиатуры два числа, и вывести на экран минимальное из них. 5 | */ 6 | 7 | import java.util.Scanner; 8 | 9 | class Solution { 10 | 11 | public static void main(String[] args) { 12 | Scanner scan = new Scanner(System.in); 13 | int a = scan.nextInt(); 14 | int b = scan.nextInt(); 15 | if (a < b) { 16 | System.out.println(a); 17 | } else { 18 | System.out.println(b); 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /src/com/javarush/test/level04/lesson06/task04/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level04.lesson06.task04; 2 | 3 | /* Сравнить имена 4 | Ввести с клавиатуры два имени, и если имена одинаковые вывести сообщение «Имена идентичны». Если имена разные, но их длины равны – вывести сообщение – «Длины имен равны». 5 | */ 6 | 7 | import java.util.Scanner; 8 | 9 | class Solution { 10 | 11 | public static void main(String[] args) { 12 | Scanner scan = new Scanner(System.in); 13 | String name1 = scan.nextLine(); 14 | String name2 = scan.nextLine(); 15 | if (name1.equals(name2)) { 16 | System.out.println("Имена идентичны"); 17 | } else if (name1.length() == name2.length()) { 18 | System.out.println("Длины имен равны"); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/com/javarush/test/level04/lesson06/task05/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level04.lesson06.task05; 2 | 3 | /* 18+ 4 | Ввести с клавиатуры имя и возраст. Если возраст меньше 18 вывести надпись «Подрасти еще». 5 | */ 6 | 7 | import java.util.Scanner; 8 | 9 | class Solution { 10 | 11 | public static void main(String[] args) { 12 | Scanner scan = new Scanner(System.in); 13 | String name = scan.nextLine(); 14 | int age = scan.nextInt(); 15 | if (age < 18) { 16 | System.out.println("Подрасти еще"); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/com/javarush/test/level04/lesson06/task06/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level04.lesson06.task06; 2 | 3 | /* И 18-ти достаточно 4 | Ввести с клавиатуры имя и возраст. Если возраст больше 20 вывести надпись «И 18-ти достаточно». 5 | */ 6 | 7 | import java.util.Scanner; 8 | 9 | class Solution { 10 | 11 | public static void main(String[] args) { 12 | Scanner scan = new Scanner(System.in); 13 | String name = scan.nextLine(); 14 | int age = scan.nextInt(); 15 | if (age > 20) { 16 | System.out.println("И 18-ти достаточно"); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/com/javarush/test/level04/lesson10/task01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level04.lesson10.task01; 2 | 3 | /* 10 чисел 4 | Вывести на экран числа от 1 до 10 используя цикл while. 5 | */ 6 | 7 | class Solution { 8 | 9 | public static void main(String[] args) { 10 | int x = 1; 11 | while (x <= 10) { 12 | System.out.print(x + " "); 13 | x++; 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /src/com/javarush/test/level04/lesson10/task02/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level04.lesson10.task02; 2 | 3 | /* 10 чисел наоборот 4 | Вывести на экран числа от 10 до 1 используя цикл while. 5 | */ 6 | 7 | class Solution { 8 | 9 | public static void main(String[] args) { 10 | int x = 10; 11 | while (x > 0) { 12 | System.out.print(x + " "); 13 | x--; 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/com/javarush/test/level04/lesson10/task03/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level04.lesson10.task03; 2 | 3 | import java.util.Scanner; 4 | 5 | /* Хорошего не бывает много 6 | Ввести с клавиатуры строку и число N. 7 | Вывести на экран строку N раз используя цикл while. 8 | Пример ввода: 9 | абв 10 | 2 11 | Пример вывода: 12 | абв 13 | абв 14 | */ 15 | 16 | class Solution { 17 | 18 | public static void main(String[] args) { 19 | Scanner scan = new Scanner(System.in); 20 | String str = scan.nextLine(); 21 | int number = scan.nextInt(); 22 | int x = 0; 23 | while (x < number) { 24 | System.out.println(str); 25 | x++; 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/com/javarush/test/level04/lesson13/task01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level04.lesson13.task01; 2 | 3 | /* Четные числа 4 | Используя цикл for вывести на экран чётные числа от 1 до 100 включительно. 5 | */ 6 | 7 | class Solution { 8 | 9 | public static void main(String[] args) { 10 | for (int x = 2; x <= 100; x = x + 2) { 11 | System.out.print(x + " "); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/com/javarush/test/level04/lesson13/task02/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level04.lesson13.task02; 2 | 3 | import java.util.Scanner; 4 | 5 | /* Рисуем прямоугольник 6 | Ввести с клавиатуры два числа m и n. 7 | Используя цикл for вывести на экран прямоугольник размером m на n из восьмёрок. 8 | Пример: m=2, n=4 9 | 8888 10 | 8888 11 | */ 12 | 13 | class Solution { 14 | 15 | public static void main(String[] args) { 16 | Scanner scan = new Scanner(System.in); 17 | int m = scan.nextInt(); 18 | int n = scan.nextInt(); 19 | for (int y = 0; y < m; y++) { 20 | for (int x = 0; x < n; x++) { 21 | System.out.print(8); 22 | } 23 | System.out.println(""); 24 | } 25 | 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/com/javarush/test/level04/lesson13/task03/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level04.lesson13.task03; 2 | 3 | /* Рисуем треугольник 4 | Используя цикл for вывести на экран прямоугольный треугольник из восьмёрок со сторонами 10 и 10. 5 | Пример: 6 | 8 7 | 88 8 | 888 9 | ... 10 | */ 11 | 12 | class Solution { 13 | 14 | public static void main(String[] args) { 15 | int y, x; 16 | for (y = 1; y <= 10; y++) { 17 | for (x = 0; x < y; x++) { 18 | System.out.print(8); 19 | } 20 | System.out.println(""); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/com/javarush/test/level04/lesson13/task04/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level04.lesson13.task04; 2 | 3 | /* Рисуем линии 4 | Используя цикл for вывести на экран: 5 | - горизонтальную линию из 10 восьмёрок 6 | - вертикальную линию из 10 восьмёрок. 7 | */ 8 | 9 | class Solution { 10 | 11 | public static void main(String[] args) { 12 | for (int x = 0; x < 10; x++) { 13 | System.out.print(8); 14 | } 15 | System.out.println(""); 16 | for (int x = 0; x < 10; x++) { 17 | System.out.println(8); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/com/javarush/test/level04/lesson13/task05/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level04.lesson13.task05; 2 | 3 | import java.util.Scanner; 4 | 5 | /* Все любят Мамбу 6 | Ввести с клавиатуры имя и используя цикл for 10 раз вывести: [*имя* любит меня.] 7 | Пример текста: 8 | Света любит меня. 9 | */ 10 | 11 | class Solution { 12 | 13 | public static void main(String[] args) { 14 | Scanner scan = new Scanner(System.in); 15 | String name = scan.nextLine(); 16 | for (int x = 0; x < 10; x++) { 17 | System.out.println(name + " любит меня."); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/com/javarush/test/level04/lesson16/home01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level04.lesson16.home01; 2 | 3 | /* Я никогда не буду работать за копейки 4 | Используя цикл вывести на экран сто раз надпись: 5 | «Я никогда не буду работать за копейки. Амиго» 6 | */ 7 | 8 | class Solution { 9 | 10 | public static void main(String[] args) { 11 | for (int x = 0; x < 100; x++) { 12 | System.out.println("Я никогда не буду работать за копейки. Амиго"); 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/com/javarush/test/level04/lesson16/home03/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level04.lesson16.home03; 2 | 3 | /* Посчитать сумму чисел 4 | Вводить с клавиатуры числа и считать их сумму. Если пользователь ввел -1, вывести на экран сумму и завершить программу. -1 должно учитываться в сумме. 5 | */ 6 | 7 | import java.io.BufferedReader; 8 | import java.io.InputStreamReader; 9 | 10 | class Solution { 11 | 12 | public static void main(String[] args) throws Exception { 13 | BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in)); 14 | int sum = 0; 15 | for (; true; ) { 16 | String s = buffer.readLine(); 17 | int number = Integer.parseInt(s); 18 | if (number == -1) { 19 | sum = sum + number; 20 | System.out.println(sum); 21 | break; 22 | } 23 | sum = sum + number; 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/com/javarush/test/level04/lesson16/home04/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level04.lesson16.home04; 2 | 3 | /* Меня зовут 'Вася'... 4 | Ввести с клавиатуры строку name. 5 | Ввести с клавиатуры дату рождения (три числа): y, m, d. 6 | Вывести на экран текст: 7 | «Меня зовут name 8 | Я родился d.m.y» 9 | Пример: 10 | Меня зовут Вася 11 | Я родился 15.2.1988 12 | */ 13 | 14 | import java.util.Scanner; 15 | 16 | class Solution { 17 | 18 | public static void main(String[] args) { 19 | Scanner scan = new Scanner(System.in); 20 | String name = scan.nextLine(); 21 | int b1 = scan.nextInt(); 22 | int b2 = scan.nextInt(); 23 | int b3 = scan.nextInt(); 24 | System.out.println("Меня зовут " + name); 25 | System.out.println("Я родился " + b3 + "." + b2 + "." + b1); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/com/javarush/test/level05/lesson05/task01/Cat.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level05.lesson05.task01; 2 | 3 | /* Создать класс Cat 4 | Создать класс Cat. У кота должно быть имя (name, String), возраст (age, int), вес (weight, int), сила (strength, int). 5 | */ 6 | 7 | class Cat { 8 | 9 | String name; 10 | int age, weight, strength; 11 | } 12 | -------------------------------------------------------------------------------- /src/com/javarush/test/level05/lesson05/task02/Cat.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level05.lesson05.task02; 2 | 3 | /* Реализовать метод fight 4 | Реализовать метод boolean fight(Cat anotherCat): 5 | реализовать механизм драки котов в зависимости от их веса, возраста и силы. 6 | Зависимость придумать самому. Метод должен определять, выиграли ли мы (this) бой или нет, 7 | т.е. возвращать true, если выиграли и false - если нет. 8 | Должно выполняться условие: 9 | если cat1.fight(cat2) = true , то cat2.fight(cat1) = false 10 | */ 11 | 12 | class Cat { 13 | 14 | public String name; 15 | public int age; 16 | public int strength; 17 | private int weight; 18 | 19 | public Cat() { 20 | } 21 | 22 | public boolean fight(Cat anotherCat) { 23 | return anotherCat.weight <= this.weight; 24 | } 25 | } 26 | 27 | -------------------------------------------------------------------------------- /src/com/javarush/test/level05/lesson05/task03/Dog.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level05.lesson05.task03; 2 | 3 | /* Геттеры и сеттеры для класса Dog 4 | Создать class Dog. У собаки должна быть кличка String name и возраст int age. 5 | Создайте геттеры и сеттеры для всех переменных класса Dog. 6 | */ 7 | 8 | class Dog { 9 | 10 | private String name; 11 | private int age; 12 | 13 | public String getName() { 14 | return name; 15 | } 16 | 17 | public void setName(String name) { 18 | this.name = name; 19 | } 20 | 21 | public int getAge() { 22 | return age; 23 | } 24 | 25 | public void setAge(int age) { 26 | this.age = age; 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /src/com/javarush/test/level05/lesson07/task01/Friend.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level05.lesson07.task01; 2 | 3 | /* Создать класс Friend 4 | Создать класс Friend (друг) с тремя инициализаторами (тремя методами initialize): 5 | - Имя 6 | - Имя, возраст 7 | - Имя, возраст, пол 8 | */ 9 | 10 | class Friend { 11 | 12 | private String name; 13 | private int age; 14 | @SuppressWarnings("FieldCanBeLocal") 15 | private boolean gender; 16 | 17 | public void initialize(String name) { 18 | this.name = name; 19 | } 20 | 21 | public void initialize(String name, int age) { 22 | this.name = name; 23 | this.age = age; 24 | } 25 | 26 | public void initialize(String name, int age, boolean gender) { 27 | this.name = name; 28 | this.age = age; 29 | this.gender = gender; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/com/javarush/test/level05/lesson07/task03/Dog.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level05.lesson07.task03; 2 | 3 | /* Создать класс Dog 4 | Создать класс Dog (собака) с тремя инициализаторами: 5 | - Имя 6 | - Имя, рост 7 | - Имя, рост, цвет 8 | */ 9 | 10 | class Dog { 11 | 12 | private String name; 13 | private int height; 14 | @SuppressWarnings("FieldCanBeLocal") 15 | private String colour; 16 | 17 | public void initialize(String name) { 18 | this.name = name; 19 | } 20 | 21 | public void initialize(String name, int height) { 22 | this.name = name; 23 | this.height = height; 24 | } 25 | 26 | public void initialize(String name, int height, String colour) { 27 | this.name = name; 28 | this.height = height; 29 | this.colour = colour; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/com/javarush/test/level05/lesson09/task01/Friend.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level05.lesson09.task01; 2 | 3 | /* Создать класс Friend 4 | Создать класс Friend (друг) с тремя конструкторами: 5 | - Имя 6 | - Имя, возраст 7 | - Имя, возраст, пол 8 | */ 9 | 10 | class Friend { 11 | 12 | private final String name; 13 | private int age; 14 | @SuppressWarnings("FieldCanBeLocal") 15 | private boolean gender; 16 | 17 | public Friend(String name) { 18 | this.name = name; 19 | } 20 | 21 | public Friend(String name, int age) { 22 | this.name = name; 23 | this.age = age; 24 | } 25 | 26 | public Friend(String name, int age, boolean gender) { 27 | this.name = name; 28 | this.age = age; 29 | this.gender = gender; 30 | } 31 | } -------------------------------------------------------------------------------- /src/com/javarush/test/level05/lesson09/task03/Dog.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level05.lesson09.task03; 2 | 3 | /* Создать класс Dog 4 | Создать класс Dog (собака) с тремя конструкторами: 5 | - Имя 6 | - Имя, рост 7 | - Имя, рост, цвет 8 | */ 9 | 10 | class Dog { 11 | 12 | private final String name; 13 | private int height; 14 | @SuppressWarnings("FieldCanBeLocal") 15 | private String color; 16 | 17 | public Dog(String name) { 18 | this.name = name; 19 | } 20 | 21 | public Dog(String name, int height) { 22 | this.name = name; 23 | this.height = height; 24 | } 25 | 26 | public Dog(String name, int height, String color) { 27 | this.name = name; 28 | this.height = height; 29 | this.color = color; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/com/javarush/test/level05/lesson12/bonus01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level05.lesson12.bonus01; 2 | 3 | import java.io.BufferedReader; 4 | import java.io.InputStreamReader; 5 | 6 | /* Нужно исправить программу, чтобы компилировалась и работала 7 | Задача: Программа вводит два числа с клавиатуры и выводит их сумму на экран. 8 | */ 9 | 10 | class Solution { 11 | 12 | public static void main(String[] args) throws Exception { 13 | BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); 14 | int a = Integer.parseInt(reader.readLine()); 15 | int b = Integer.parseInt(reader.readLine()); 16 | int sum = a + b; 17 | System.out.println("Sum = " + sum); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/com/javarush/test/level05/lesson12/home04/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level05.lesson12.home04; 2 | 3 | /* Вывести на экран сегодняшнюю дату 4 | Вывести на экран текущую дату в аналогичном виде "21 12 2012". 5 | */ 6 | 7 | import java.text.SimpleDateFormat; 8 | import java.util.Date; 9 | 10 | class Solution { 11 | 12 | public static void main(String[] args) { 13 | SimpleDateFormat simpleDate = new SimpleDateFormat("dd MM yyyy"); 14 | System.out.println(simpleDate.format(new Date())); 15 | } 16 | } 17 | 18 | -------------------------------------------------------------------------------- /src/com/javarush/test/level05/lesson12/home05/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level05.lesson12.home05; 2 | 3 | /* Вводить с клавиатуры числа и считать их сумму 4 | Вводить с клавиатуры числа и считать их сумму, пока пользователь не введёт слово «сумма». Вывести на экран полученную сумму. 5 | */ 6 | 7 | import java.io.BufferedReader; 8 | import java.io.InputStreamReader; 9 | 10 | class Solution { 11 | 12 | public static void main(String[] args) throws Exception { 13 | BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); 14 | int sum = 0; 15 | while (true) { 16 | String aString = reader.readLine(); 17 | if (aString.equals("сумма")) { 18 | System.out.println(sum); 19 | break; 20 | } else { 21 | int a = Integer.parseInt(aString); 22 | sum = sum + a; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/com/javarush/test/level06/lesson05/task01/Cat.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level06.lesson05.task01; 2 | 3 | /* Метод finalize класса Cat 4 | В классе Cat создать метод protected void finalize() throws Throwable 5 | */ 6 | 7 | class Cat { 8 | 9 | protected void finalize() { 10 | System.out.println("Кот удален"); 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /src/com/javarush/test/level06/lesson05/task02/Cat.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level06.lesson05.task02; 2 | 3 | /* Классы Cat и Dog и метод finalize для каждого 4 | В каждом классе Cat и Dog написать метод finalize, который выводит на экран текст о том, что такой-то объект уничтожен. 5 | */ 6 | 7 | class Cat { 8 | 9 | protected void finalize() { 10 | System.out.println("1"); 11 | } 12 | } 13 | 14 | class Dog { 15 | 16 | protected void finalize() { 17 | System.out.println("1"); 18 | } 19 | } -------------------------------------------------------------------------------- /src/com/javarush/test/level06/lesson05/task03/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level06.lesson05.task03; 2 | 3 | /* 10 000 объектов Cat и Dog 4 | Создать в цикле 10 000 объектов Cat и Dog. (Java-машина должна начать уничтожать неиспользуемые, и метод finalize хоть раз да вызовется). 5 | */ 6 | 7 | class Solution { 8 | 9 | public static void main(String[] args) { 10 | for (int x = 0; x < 10000; x++) { 11 | Cat cat = new Cat(); 12 | Dog dog = new Dog(); 13 | } 14 | 15 | } 16 | } 17 | 18 | class Cat { 19 | 20 | @Override 21 | protected void finalize() throws Throwable { 22 | super.finalize(); 23 | System.out.println("Cat destroyed"); 24 | } 25 | } 26 | 27 | class Dog { 28 | 29 | @Override 30 | protected void finalize() throws Throwable { 31 | super.finalize(); 32 | System.out.println("Dog destroyed"); 33 | } 34 | } -------------------------------------------------------------------------------- /src/com/javarush/test/level06/lesson05/task04/Cat.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level06.lesson05.task04; 2 | 3 | /* Cчётчик котов 4 | В конструкторе класса Cat [public Cat()] увеличивать счётчик котов (статическую переменную этого же класса catCount) на 1. В методе finalize уменьшать на 1. 5 | */ 6 | 7 | class Cat { 8 | 9 | private static int catCount = 0; 10 | 11 | public Cat() { 12 | catCount++; 13 | } 14 | 15 | protected void finalize() { 16 | catCount--; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/com/javarush/test/level06/lesson08/task01/Cat.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level06.lesson08.task01; 2 | 3 | /* Класс Cat и статическая переменная catCount 4 | Создать статическую переменную int catCount в классе Cat. Создай конструктор [public Cat()], в котором увеличивай данную переменную на 1. 5 | */ 6 | 7 | class Cat { 8 | 9 | private static int catCount; 10 | 11 | public Cat() { 12 | catCount++; 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/com/javarush/test/level06/lesson08/task02/Cat.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level06.lesson08.task02; 2 | 3 | /* Статические методы: int getCatCount() и setCatCount(int) 4 | Добавить к классу Cat два статических метода: int getCatCount() и setCatCount(int), с помощью которых можно получить/изменить количество котов (переменную catCount) 5 | */ 6 | 7 | class Cat { 8 | 9 | private static int catCount = 0; 10 | 11 | public Cat() { 12 | catCount++; 13 | } 14 | 15 | public static int getCatCount() { 16 | return catCount; 17 | } 18 | 19 | public static void setCatCount(int catCount) { 20 | Cat.catCount = catCount; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/com/javarush/test/level06/lesson08/task03/Util.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level06.lesson08.task03; 2 | 3 | /* Класс Util 4 | Реализовать статический метод double getDistance(x1, y1, x2, y2). Он должен вычислять расстояние между точками. 5 | Используй метод double Math.sqrt(double a), который вычисляет квадратный корень переданного параметра 6 | */ 7 | 8 | class Util { 9 | 10 | public static double getDistance(int x1, int y1, int x2, int y2) { 11 | return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1)); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/com/javarush/test/level06/lesson08/task05/StringHelper.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level06.lesson08.task05; 2 | 3 | /* Класс StringHelper 4 | Cделать класс StringHelper, у которого будут 2 статических метода: 5 | String multiply(String s, int count) – возвращает строку повторенную count раз. 6 | String multiply(String s) – возвращает строку повторенную 5 раз. 7 | Пример: 8 | Амиго -> АмигоАмигоАмигоАмигоАмиго 9 | */ 10 | 11 | class StringHelper { 12 | 13 | public static String multiply(String s) { 14 | StringBuilder result = new StringBuilder(); 15 | for (int x = 0; x < 5; x++) { 16 | result.append(s); 17 | } 18 | return result.toString(); 19 | } 20 | 21 | public static String multiply(String s, int count) { 22 | StringBuilder result = new StringBuilder(); 23 | for (int x = 0; x < count; x++) { 24 | result.append(s); 25 | } 26 | return result.toString(); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/com/javarush/test/level06/lesson11/bonus01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level06.lesson11.bonus01; 2 | 3 | /* Нужно исправить программу, чтобы компилировалась и работала 4 | Задача: Программа вводит два числа с клавиатуры и выводит их максимум в виде «Max is 25» 5 | */ 6 | 7 | import java.io.BufferedReader; 8 | import java.io.IOException; 9 | import java.io.InputStreamReader; 10 | 11 | class Solution { 12 | 13 | public static int max = 100; 14 | 15 | public static void main(String[] args) throws IOException { 16 | BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); 17 | String max = "Max is "; 18 | int a = Integer.parseInt(reader.readLine()); 19 | int b = Integer.parseInt(reader.readLine()); 20 | int c = a > b ? a : b; 21 | System.out.println(max + c); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/com/javarush/test/level06/lesson11/home02/Cat.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level06.lesson11.home02; 2 | 3 | import java.util.ArrayList; 4 | 5 | /* Статические коты 6 | 1. В классе Cat добавь public статическую переменную cats (ArrayList). 7 | 2. Пусть при каждом создании кота (нового объекта Cat) в переменную cats добавляется этот новый кот. Создать 10 объектов Cat. 8 | 3. Метод printCats должен выводить всех котов на экран. Нужно использовать переменную cats. 9 | */ 10 | 11 | class Cat { 12 | 13 | private static final ArrayList cats = new ArrayList<>(); 14 | 15 | private Cat() { 16 | cats.add(this); 17 | } 18 | 19 | public static void main(String[] args) { 20 | for (int i = 0; i < 10; i++) { 21 | new Cat(); 22 | } 23 | printCats(); 24 | } 25 | 26 | private static void printCats() { 27 | for (Cat cat : cats) { 28 | System.out.println(cat); 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /src/com/javarush/test/level06/lesson11/home03/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level06.lesson11.home03; 2 | 3 | /* Переставь один модификатор static 4 | Переставь один модификатор static, чтобы пример скомпилировался. 5 | */ 6 | 7 | class Solution { 8 | 9 | private static int A = 5; 10 | private final int B = 2; 11 | public int C = A * B; 12 | 13 | public static void main(String[] args) { 14 | A = 15; 15 | } 16 | } 17 | 18 | -------------------------------------------------------------------------------- /src/com/javarush/test/level06/lesson11/home04/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level06.lesson11.home04; 2 | 3 | /* Мама мыла раму или наоборот 4 | Расставьте минимальное количество static-ов, чтобы код начал работать, и программа успешно завершилась 5 | */ 6 | 7 | class Solution { 8 | 9 | private static int step; 10 | 11 | public static void main(String[] args) { 12 | method1(); 13 | } 14 | 15 | private static void method1() { 16 | method2(); 17 | } 18 | 19 | private static void method2() { 20 | new Solution().method3(); 21 | } 22 | 23 | private void method3() { 24 | method4(); 25 | } 26 | 27 | private void method4() { 28 | step++; 29 | for (StackTraceElement element : Thread.currentThread().getStackTrace()) { 30 | System.out.println(element); 31 | } 32 | if (step > 1) { 33 | return; 34 | } 35 | main(null); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/com/javarush/test/level06/lesson11/home05/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level06.lesson11.home05; 2 | 3 | /* Есть новые идеи? Подумаем... 4 | 1. В классе Solution создать public статический класс Idea 5 | 2. В классе Idea создать метод public String getDescription(), который будет возвращать любой непустой текст 6 | 3. В классе Solution создайте статический метод public void printIdea(Idea idea), который будет выводить 7 | на экран описание идеи - это то, что возвращает метод getDescription 8 | */ 9 | 10 | class Solution { 11 | 12 | public static void main(String[] args) { 13 | Idea op = new Idea(); 14 | printIdea(op); 15 | } 16 | 17 | private static void printIdea(Idea id) { 18 | System.out.println(id.getDescription()); 19 | } 20 | 21 | static class Idea { 22 | 23 | @SuppressWarnings("SameReturnValue") 24 | String getDescription() { 25 | return "waaaat?"; 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/com/javarush/test/level06/lesson11/home06/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level06.lesson11.home06; 2 | 3 | /* KissMyShinyMetalAss 4 | Создай класс с именем KissMyShinyMetalAss. Создай объект этого класса, выведи его на экран. 5 | */ 6 | 7 | class Solution { 8 | 9 | public static void main(String[] args) { 10 | KissMyShinyMetalAss robot = new KissMyShinyMetalAss(); 11 | System.out.println(robot); 12 | } 13 | 14 | private static class KissMyShinyMetalAss { 15 | 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/com/javarush/test/level06/lesson11/home07/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level06.lesson11.home07; 2 | 3 | /* Три статические переменных name 4 | Создай 3 public статических переменных: String Solution.name, String Cat.name, String Dog.name 5 | */ 6 | 7 | class Solution { 8 | 9 | public static String name; 10 | 11 | private static class Cat { 12 | 13 | public static String name; 14 | } 15 | 16 | private static class Dog { 17 | 18 | public static String name; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/com/javarush/test/level07/lesson04/task02/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level07.lesson04.task02; 2 | 3 | import java.util.Scanner; 4 | 5 | /* Массив из строчек в обратном порядке 6 | 1. Создать массив на 10 строчек. 7 | 2. Ввести с клавиатуры 8 строчек и сохранить их в массив. 8 | 3. Вывести содержимое всего массива (10 элементов) на экран в обратном порядке. Каждый элемент - с новой строки. 9 | */ 10 | 11 | class Solution { 12 | 13 | public static void main(String[] args) { 14 | String[] mass = new String[10]; 15 | Scanner scan = new Scanner(System.in); 16 | for (int i = 0; i < 8; i++) { 17 | mass[i] = scan.nextLine(); 18 | } 19 | for (int i = mass.length - 1; i >= 0; i--) { 20 | System.out.println(mass[i]); 21 | } 22 | } 23 | } -------------------------------------------------------------------------------- /src/com/javarush/test/level07/lesson04/task04/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level07.lesson04.task04; 2 | 3 | import java.util.Scanner; 4 | 5 | /* Массив из чисел в обратном порядке 6 | 1. Создать массив на 10 чисел. 7 | 2. Ввести с клавиатуры 10 чисел и записать их в массив. 8 | 3. Расположить элементы массива в обратном порядке. 9 | 4. Вывести результат на экран, каждое значение выводить с новой строки. 10 | */ 11 | 12 | class Solution { 13 | 14 | public static void main(String[] args) { 15 | int[] mass = new int[10]; 16 | Scanner scan = new Scanner(System.in); 17 | for (int i = 0; i < mass.length; i++) { 18 | mass[mass.length - 1 - i] = scan.nextInt(); 19 | } 20 | for (int mas : mass) { 21 | System.out.println(mas); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/com/javarush/test/level07/lesson06/task01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level07.lesson06.task01; 2 | 3 | /* 5 различных строчек в списке 4 | 1. Создай список строк. 5 | 2. Добавь в него 5 различных строчек. 6 | 3. Выведи его размер на экран. 7 | 4. Используя цикл выведи его содержимое на экран, каждое значение с новой строки. 8 | */ 9 | 10 | import java.util.ArrayList; 11 | 12 | class Solution { 13 | 14 | public static void main(String[] args) { 15 | ArrayList list = new ArrayList<>(); 16 | for (int i = 0; i < 5; i++) { 17 | list.add("i"); 18 | } 19 | System.out.println(list.size()); 20 | for (String aList : list) { 21 | System.out.println(aList); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/com/javarush/test/level07/lesson06/task03/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level07.lesson06.task03; 2 | 3 | /* 5 строчек в обратном порядке 4 | 1. Создай список строк. 5 | 2. Считай с клавиатуры 5 строк и добавь в него. 6 | 3. Расположи их в обратном порядке. 7 | 4. Используя цикл выведи содержимое на экран, каждое значение с новой строки. 8 | */ 9 | 10 | import java.util.ArrayList; 11 | import java.util.Scanner; 12 | 13 | class Solution { 14 | 15 | public static void main(String[] args) { 16 | ArrayList list = new ArrayList<>(); 17 | Scanner scan = new Scanner(System.in); 18 | for (int i = 0; i < 5; i++) { 19 | list.add(0, scan.nextLine()); 20 | } 21 | for (String aList : list) { 22 | System.out.println(aList); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/com/javarush/test/level07/lesson06/task04/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level07.lesson06.task04; 2 | 3 | /* 5 строчек в начало списка 4 | 1. Создай список строк. 5 | 2. Добавь в него 5 строчек с клавиатуры, но только добавлять не в конец списка, а в начало. 3. 6 | 3. Используя цикл выведи содержимое на экран, каждое значение с новой строки. 7 | */ 8 | 9 | import java.util.ArrayList; 10 | import java.util.Scanner; 11 | 12 | class Solution { 13 | 14 | public static void main(String[] args) { 15 | ArrayList list = new ArrayList<>(); 16 | Scanner scan = new Scanner(System.in); 17 | for (int i = 0; i < 5; i++) { 18 | list.add(0, scan.nextLine()); 19 | } 20 | for (String aList : list) { 21 | System.out.println(aList); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/com/javarush/test/level07/lesson09/task02/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level07.lesson09.task02; 2 | 3 | import java.io.BufferedReader; 4 | import java.io.InputStreamReader; 5 | import java.util.ArrayList; 6 | 7 | 8 | /* 5 слов в обратном порядке 9 | Введи с клавиатуры 5 слов в список строк. Выведи их в обратном порядке. 10 | */ 11 | 12 | class Solution { 13 | 14 | public static void main(String[] args) throws Exception { 15 | BufferedReader readOn = new BufferedReader(new InputStreamReader(System.in)); 16 | ArrayList list = new ArrayList<>(); 17 | for (int i = 0; i < 5; i++) { 18 | String a = readOn.readLine(); 19 | list.add(a); 20 | } 21 | 22 | for (int i = list.size() - 1; i >= 0; i--) { 23 | System.out.println(list.get(i)); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/com/javarush/test/level07/lesson09/task03/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level07.lesson09.task03; 2 | 3 | import java.util.ArrayList; 4 | 5 | /* Слово «именно» 6 | 1. Создай список из слов «мама», «мыла», «раму». 7 | 2. После каждого слова вставь в список строку, содержащую слово «именно». 8 | 3. Используя цикл for вывести результат на экран, каждый элемент списка с новой строки. 9 | */ 10 | 11 | class Solution { 12 | 13 | public static void main(String[] args) { 14 | ArrayList list = new ArrayList<>(); 15 | list.add("мама"); 16 | list.add("мыла"); 17 | list.add("раму"); 18 | String s = "именно"; 19 | list.add(1, s); 20 | list.add(3, s); 21 | list.add(5, s); 22 | for (String aList : list) { 23 | System.out.println(aList); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/com/javarush/test/level07/lesson12/home01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level07.lesson12.home01; 2 | 3 | import java.io.BufferedReader; 4 | import java.io.IOException; 5 | import java.io.InputStreamReader; 6 | import java.util.ArrayList; 7 | 8 | /* Вывести числа в обратном порядке 9 | Ввести с клавиатуры 10 чисел и заполнить ими список. 10 | Вывести их в обратном порядке. 11 | Использовать только цикл for. 12 | */ 13 | 14 | class Solution { 15 | 16 | public static void main(String[] args) throws IOException { 17 | BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); 18 | ArrayList list = new ArrayList<>(); 19 | for (int i = 0; i < 10; i++) { 20 | list.add(Integer.parseInt(reader.readLine())); 21 | } 22 | for (int i = list.size() - 1; i >= 0; i--) { 23 | System.out.println(list.get(i)); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/com/javarush/test/level07/lesson12/home05/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level07.lesson12.home05; 2 | 3 | /* Бум 4 | Написать программу, которая ведёт обратный отсчёт с 30 до 0, и в конце выводит на экран текст «Бум!». Программа должна уменьшать число 10 раз в секунду. Для того чтобы вставить в программу задержку, воспользуйся функцией: 5 | Thread.sleep(100); //задержка на одну десятую секунды. 6 | Пример: 7 | 30 8 | 29 9 | … 10 | 1 11 | 0 12 | Бум! 13 | */ 14 | 15 | import java.util.concurrent.TimeUnit; 16 | 17 | class Solution { 18 | 19 | public static void main(String[] args) throws InterruptedException { 20 | for (int i = 30; i >= 0; i--) { 21 | System.out.println(i); 22 | TimeUnit.MILLISECONDS.sleep(100); 23 | } 24 | System.out.println("Бум!"); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/com/javarush/test/level07/lesson12/home07/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level07.lesson12.home07; 2 | 3 | /* Переставь один модификатор static 4 | Переставь один модификатор static, чтобы пример скомпилировался. 5 | */ 6 | 7 | class Solution { 8 | 9 | private static final int A = 5; 10 | private static final int B = 2; 11 | private static final int C = A * B; 12 | 13 | @SuppressWarnings("SameReturnValue") 14 | public int getValue() { 15 | return C; 16 | } 17 | 18 | } 19 | 20 | -------------------------------------------------------------------------------- /src/com/javarush/test/level08/lesson06/task01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level08.lesson06.task01; 2 | 3 | import java.util.ArrayList; 4 | import java.util.LinkedList; 5 | 6 | /* Создать два списка LinkedList и ArrayList 7 | Нужно создать два списка – LinkedList и ArrayList. 8 | */ 9 | 10 | class Solution { 11 | 12 | public static Object createArrayList() { 13 | return new ArrayList(); 14 | } 15 | 16 | public static Object createLinkedList() { 17 | return new LinkedList(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/com/javarush/test/level08/lesson06/task05/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level08.lesson06.task05; 2 | 3 | import java.util.ArrayList; 4 | import java.util.LinkedList; 5 | import java.util.List; 6 | 7 | /* Четыре метода 8 | Реализовать 4 метода. Они должны возвращать список, который лучше всего подходит для выполнения данных операций (быстрее всего справится с большим количеством операций). Ничего измерять не нужно. 9 | */ 10 | 11 | class Solution { 12 | 13 | public static List getListForGet() { 14 | return new ArrayList(); 15 | } 16 | 17 | public static List getListForSet() { 18 | return new ArrayList(); 19 | } 20 | 21 | public static List getListForAddOrInsert() { 22 | return new LinkedList(); 23 | } 24 | 25 | public static List getListForRemove() { 26 | return new LinkedList(); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/com/javarush/test/level08/lesson11/home07/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level08.lesson11.home07; 2 | 3 | /* Переставь один модификатор static 4 | Переставь один модификатор static, чтобы пример скомпилировался. 5 | */ 6 | 7 | class Solution { 8 | 9 | private static final int A = 5; 10 | private static final int B = 2; 11 | private static final int D = B * A; 12 | @SuppressWarnings("FieldCanBeLocal") 13 | private final int C = A * B; 14 | 15 | @SuppressWarnings("SameReturnValue") 16 | public int getValue() { 17 | return D; 18 | } 19 | 20 | public int getValue2() { 21 | return C; 22 | } 23 | } 24 | 25 | -------------------------------------------------------------------------------- /src/com/javarush/test/level08/lesson11/home09/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level08.lesson11.home09; 2 | 3 | import java.util.Date; 4 | 5 | class Solution { 6 | 7 | public static void main(String[] args) { 8 | String s = "MAY 1 2013"; 9 | boolean a = isDateOdd(s); 10 | } 11 | 12 | @SuppressWarnings("deprecation") 13 | private static boolean isDateOdd(String date) { 14 | boolean bool; 15 | Date date1 = new Date(date); 16 | Date ms = new Date(date); 17 | ms.setHours(0); 18 | ms.setMinutes(0); 19 | ms.setSeconds(0); 20 | ms.setMonth(0); 21 | ms.setDate(1); 22 | long num = date1.getTime() - ms.getTime(); 23 | long dayMs = 24 * 60 * 60 * 1000; 24 | int day = (int) (num / dayMs); 25 | bool = day % 2 == 0; 26 | return bool; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/com/javarush/test/level09/lesson02/task05/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level09.lesson02.task05; 2 | 3 | /* Метод должен возвращать результат – глубину её стек-трейса 4 | Написать метод, который возвращает результат – глубину его стек трейса – количество методов в нем (количество элементов в списке). Это же число метод должен выводить на экран. 5 | */ 6 | 7 | class Solution { 8 | 9 | public static int getStackTraceDeep() { 10 | StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace(); 11 | int result = stackTraceElements.length; 12 | System.out.println(result); 13 | return result; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/com/javarush/test/level09/lesson06/task01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level09.lesson06.task01; 2 | 3 | /* Исключение при работе с числами 4 | Перехватить исключение (и вывести его на экран), указав его тип, возникающее при выполнении кода: 5 | int a = 42 / 0; 6 | */ 7 | 8 | class Solution { 9 | 10 | @SuppressWarnings("NumericOverflow") 11 | public static void main(String[] args) { 12 | try { 13 | int a = 42 / 0; 14 | } catch (ArithmeticException e) { 15 | System.out.println(e.getMessage()); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/com/javarush/test/level09/lesson06/task02/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level09.lesson06.task02; 2 | 3 | /* Исключение при работе со строками 4 | Перехватить исключение (и вывести его на экран), указав его тип, возникающее при выполнении кода: 5 | String s = null; 6 | String m = s.toLowerCase(); 7 | */ 8 | 9 | class Solution { 10 | 11 | @SuppressWarnings("ConstantConditions") 12 | public static void main(String[] args) { 13 | try { 14 | String s = null; 15 | String m = s.toLowerCase(); 16 | } catch (NullPointerException e) { 17 | System.out.println(e.getMessage()); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/com/javarush/test/level09/lesson06/task03/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level09.lesson06.task03; 2 | 3 | /* Исключение при работе с массивами 4 | Перехватить исключение (и вывести его на экран), указав его тип, возникающее при выполнении кода: 5 | int[] m = new int[2]; 6 | m[8] = 5; 7 | */ 8 | 9 | class Solution { 10 | 11 | @SuppressWarnings("ConstantConditions") 12 | public static void main(String[] args) { 13 | try { 14 | @SuppressWarnings("MismatchedReadAndWriteOfArray") int[] m = new int[2]; 15 | m[8] = 5; 16 | } catch (ArrayIndexOutOfBoundsException e) { 17 | System.out.println(e.getMessage()); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/com/javarush/test/level09/lesson06/task04/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level09.lesson06.task04; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | /* Исключение при работе с коллекциями List 7 | Перехватить исключение (и вывести его на экран), указав его тип, возникающее при выполнении кода: 8 | ArrayList list = new ArrayList(); 9 | String s = list.get(18); 10 | */ 11 | 12 | class Solution { 13 | 14 | @SuppressWarnings("MismatchedQueryAndUpdateOfCollection") 15 | public static void main(String[] args) { 16 | try { 17 | List list = new ArrayList<>(); 18 | String s = list.get(18); 19 | } catch (IndexOutOfBoundsException e) { 20 | System.out.println(e.getMessage()); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/com/javarush/test/level09/lesson06/task05/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level09.lesson06.task05; 2 | 3 | import java.util.HashMap; 4 | 5 | /* Исключение при работе с коллекциями Map 6 | Перехватить исключение (и вывести его на экран), указав его тип, возникающее при выполнении кода: 7 | HashMap map = new HashMap(null); 8 | map.put(null, null); 9 | map.remove(null); 10 | */ 11 | 12 | class Solution { 13 | 14 | @SuppressWarnings({"ConstantConditions", "MismatchedQueryAndUpdateOfCollection"}) 15 | public static void main(String[] args) { 16 | try { 17 | HashMap map = new HashMap<>(null); 18 | map.put(null, null); 19 | map.remove(null); 20 | } catch (NullPointerException e) { 21 | System.out.println(e.getMessage()); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/com/javarush/test/level09/lesson11/home01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level09.lesson11.home01; 2 | 3 | /* Деление на ноль 4 | Создай метод public static void divisionByZero, в котором подели любое число на ноль и выведи на экран результат деления. 5 | Оберни вызов метода divisionByZero в try..catch. Выведи стек-трейс исключения используя метод exception.printStackTrace() 6 | */ 7 | 8 | class Solution { 9 | 10 | public static void main(String[] args) { 11 | try { 12 | divisionByZero(); 13 | } catch (ArithmeticException e) { 14 | e.printStackTrace(); 15 | } 16 | } 17 | 18 | @SuppressWarnings("NumericOverflow") 19 | private static void divisionByZero() { 20 | int b = 5 / 0; 21 | System.out.println(b); 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /src/com/javarush/test/level09/lesson11/home02/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level09.lesson11.home02; 2 | 3 | /* Обратный отсчёт от 10 до 0 4 | Написать в цикле обратный отсчёт от 10 до 0. Для задержки иcпользовать Thread.sleep(100); 5 | Обернуть вызов sleep в try..catch. 6 | */ 7 | 8 | import java.util.concurrent.TimeUnit; 9 | 10 | class Solution { 11 | 12 | public static void main(String[] args) { 13 | for (int i = 10; i >= 0; i--) { 14 | System.out.println(i); 15 | try { 16 | TimeUnit.MILLISECONDS.sleep(100); 17 | } catch (Exception e) { 18 | e.printStackTrace(); 19 | } 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/com/javarush/test/level09/lesson11/home07/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level09.lesson11.home07; 2 | 3 | /* Расставь модификаторы static 4 | Расставь модификаторы static так, чтобы пример скомпилировался. 5 | */ 6 | 7 | class Solution { 8 | 9 | private static int A = 5; 10 | private static final int B = 2 * A; 11 | private static int D = A * B; 12 | public int C = A * B; 13 | 14 | public void main(String[] args) { 15 | Solution room = new Solution(); 16 | A = 5; 17 | 18 | Solution.D = 5; 19 | } 20 | 21 | public int getA() { 22 | return A; 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/com/javarush/test/level10/lesson04/task02/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level10.lesson04.task02; 2 | 3 | /* Задача №2 на преобразование целых типов 4 | Расставь где нужно оператор приведения типа: 5 | int a = 15; 6 | int b = 4; 7 | float c = (a / (double)b); 8 | double d = a * 1e-3; 9 | */ 10 | 11 | class Solution { 12 | 13 | public static void main(String[] args) { 14 | int a = 15; 15 | int b = 4; 16 | float c = (float) (a / (double) b); 17 | double d = a * 1e-3; 18 | 19 | System.out.println(c + d); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/com/javarush/test/level10/lesson04/task03/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level10.lesson04.task03; 2 | 3 | /* Задача №3 на преобразование целых типов 4 | Расставь где нужно оператор приведения типа: 5 | float f = 333.50; 6 | int i = f; 7 | byte b = i; 8 | */ 9 | 10 | class Solution { 11 | 12 | public static void main(String[] args) { 13 | float f = (float) 333.50; 14 | int i = (int) f; 15 | byte b = (byte) i; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/com/javarush/test/level10/lesson04/task04/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level10.lesson04.task04; 2 | 3 | /* Задача №4 на преобразование целых типов 4 | Расставь где нужно оператор приведения типа: 5 | short number = 9; 6 | char zero = '0'; 7 | char nine = zero + number; 8 | */ 9 | 10 | class Solution { 11 | 12 | public static void main(String[] args) { 13 | short number = 9; 14 | char zero = '0'; 15 | char nine = (char) (zero + number); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/com/javarush/test/level10/lesson04/task05/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level10.lesson04.task05; 2 | 3 | /* Задача №5 на преобразование целых типов 4 | Расставь где нужно оператор приведения типа: 5 | short number = 9; 6 | char zero = '0'; 7 | short nineCode = zero + number; 8 | */ 9 | 10 | class Solution { 11 | 12 | public static void main(String[] args) { 13 | short number = 9; 14 | char zero = '0'; 15 | short nineCode = (short) (zero + number); 16 | } 17 | } -------------------------------------------------------------------------------- /src/com/javarush/test/level10/lesson11/home01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level10.lesson11.home01; 2 | 3 | /* Правильный ответ: d=2.941 4 | Добавить одну операцию по преобразованию типа, чтобы получался ответ: d=2.941. 5 | */ 6 | 7 | class Solution { 8 | 9 | public static void main(String[] args) { 10 | int a = 50; 11 | int b = 17; 12 | double d = (double) a / b; 13 | System.out.println(d); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/com/javarush/test/level10/lesson11/home02/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level10.lesson11.home02; 2 | 3 | /* Правильный ответ: d=5.5 4 | Добавить одну операцию по преобразованию типа, чтобы получался ответ: d=5.5. 5 | */ 6 | 7 | class Solution { 8 | 9 | public static void main(String[] args) { 10 | int a = 5; 11 | int b = 4; 12 | int c = 3; 13 | int e = 2; 14 | double d = a + (double) (b / c) / e; 15 | System.out.println(d); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/com/javarush/test/level10/lesson11/home03/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level10.lesson11.home03; 2 | 3 | /* Правильный ответ: d=1.0 4 | Добавить одну операцию по преобразованию типа, чтобы получался ответ: d=1.0. 5 | */ 6 | 7 | class Solution { 8 | 9 | public static void main(String[] args) { 10 | int a = 257; 11 | int b = 4; 12 | int c = 3; 13 | int e = 2; 14 | double d = (byte) a + b / c / e; 15 | 16 | System.out.println(d); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/com/javarush/test/level10/lesson11/home07/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level10.lesson11.home07; 2 | 3 | /* Расставьте минимум static-ов 4 | Расставьте как можно меньше модификаторов static так, чтобы пример скомпилировался. 5 | */ 6 | 7 | class Solution { 8 | 9 | private static int B = 5; 10 | private static int C = 5; 11 | private static int D = 5; 12 | private int A = 5; 13 | 14 | public static void main(String[] args) { 15 | Solution solution = new Solution(); 16 | solution.A = 5; 17 | B = 5 * B; 18 | C = 5 * C * D; 19 | Solution.D = 5 * D * C; 20 | 21 | Solution.D = 5; 22 | } 23 | 24 | public int getA() { 25 | return A; 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /src/com/javarush/test/level11/lesson06/task01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level11.lesson06.task01; 2 | 3 | /* Лошадь и пегас 4 | Написать два класса: Horse (лошадь) и Pegas (пегас). 5 | Унаследовать пегаса от лошади. 6 | */ 7 | 8 | class Solution { 9 | 10 | class Horse { 11 | 12 | final String name; 13 | 14 | Horse(String name) { 15 | this.name = name; 16 | } 17 | 18 | } 19 | 20 | private class Pegas extends Horse { 21 | 22 | public Pegas(String name) { 23 | super(name); 24 | } 25 | 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/com/javarush/test/level11/lesson06/task02/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level11.lesson06.task02; 2 | 3 | /* Домашние животные 4 | Написать три класса: Pet (домашнее животное), Cat(кот) и Dog(собака). 5 | Унаследовать кота и собаку от животного. 6 | */ 7 | 8 | class Solution { 9 | 10 | class Pet { 11 | 12 | } 13 | 14 | private class Cat extends Pet { 15 | 16 | } 17 | 18 | private class Dog extends Pet { 19 | 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/com/javarush/test/level11/lesson06/task03/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level11.lesson06.task03; 2 | 3 | /* В гостях у бабушки 4 | Написать шесть классов: Animal (животное), Cow(корова) и Pig(свинья), Sheep(овца), Bull(бык), Goat(козел). 5 | Унаследовать корову, свинью, овцу, быка и козла от животного. 6 | */ 7 | 8 | class Solution { 9 | 10 | class Animal { 11 | 12 | } 13 | 14 | private class Cow extends Animal { 15 | 16 | } 17 | 18 | private class Pig extends Animal { 19 | 20 | } 21 | 22 | private class Sheep extends Animal { 23 | 24 | } 25 | 26 | private class Bull extends Animal { 27 | 28 | } 29 | 30 | private class Goat extends Animal { 31 | 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /src/com/javarush/test/level11/lesson06/task04/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level11.lesson06.task04; 2 | 3 | /* Все мы работники 4 | Написать четыре класса: Worker(сотрудник), Manager(управляющий), Chief(директор) и Secretary(секретарь). 5 | Унаследовать управляющего, директора и секретаря от сотрудника. 6 | */ 7 | 8 | class Solution { 9 | 10 | private class Manager extends Worker { 11 | 12 | } 13 | 14 | private class Chief extends Worker { 15 | 16 | } 17 | 18 | class Worker { 19 | 20 | } 21 | 22 | private class Secretary extends Worker { 23 | 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/com/javarush/test/level11/lesson08/task01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level11.lesson08.task01; 2 | 3 | /* Все скрыто 4 | Скрыть все внутренние переменные класса Cat. 5 | */ 6 | 7 | class Solution { 8 | 9 | class Cat { 10 | 11 | private String name; 12 | private int age; 13 | private int weight; 14 | 15 | public Cat() { 16 | } 17 | 18 | public Cat(String name, int age, int weight) { 19 | this.name = name; 20 | this.age = age; 21 | this.weight = weight; 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/com/javarush/test/level11/lesson08/task02/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level11.lesson08.task02; 2 | 3 | /* Доступ есть 4 | Скрыть все внутренние переменные класса Cat, но только те, к которым остается доступ с помощью методов. 5 | */ 6 | 7 | class Solution { 8 | 9 | class Cat { 10 | 11 | final int weight; 12 | private String name; 13 | private int age; 14 | 15 | public Cat(String name, int age, int weight) { 16 | this.name = name; 17 | this.age = age; 18 | this.weight = weight; 19 | } 20 | 21 | public String getName() { 22 | return name; 23 | } 24 | 25 | public void setName(String name) { 26 | this.name = name; 27 | } 28 | 29 | public int getAge() { 30 | return age; 31 | } 32 | 33 | public void setAge(int age) { 34 | this.age = age; 35 | } 36 | } 37 | } -------------------------------------------------------------------------------- /src/com/javarush/test/level11/lesson08/task03/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level11.lesson08.task03; 2 | 3 | /* Ничего не поменяешь 4 | Скрыть все внутренние переменные класса Cat, а также методы, позволяющие менять внутреннее состояние объектов класса Cat. 5 | */ 6 | 7 | class Solution { 8 | 9 | class Cat { 10 | 11 | private final int weight; 12 | private String name; 13 | private int age; 14 | 15 | public Cat(String name, int age, int weight) { 16 | this.name = name; 17 | this.age = age; 18 | this.weight = weight; 19 | } 20 | 21 | public String getName() { 22 | return name; 23 | } 24 | 25 | private void setName(String name) { 26 | this.name = name; 27 | } 28 | 29 | public int getAge() { 30 | return age; 31 | } 32 | 33 | private void setAge(int age) { 34 | this.age = age; 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/com/javarush/test/level11/lesson08/task05/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level11.lesson08.task05; 2 | 3 | /* Добавь недостающие переменные 4 | Посмотри внимательно на методы и добавь недостающие переменные. 5 | */ 6 | 7 | class Solution { 8 | 9 | class Cat { 10 | 11 | private final String name; 12 | private final int age; 13 | private int weight; 14 | private int speed = 10; 15 | 16 | public Cat(String name, int age, int weight) { 17 | this.name = name; 18 | this.age = age; 19 | this.weight = weight; 20 | } 21 | 22 | public String getName() { 23 | return name; 24 | } 25 | 26 | public int getAge() { 27 | return age; 28 | } 29 | 30 | public void setWeight(int weight) { 31 | this.weight = weight; 32 | 33 | } 34 | 35 | public void setSpeed(int speed) { 36 | this.speed = speed; 37 | 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/com/javarush/test/level11/lesson11/bonus01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level11.lesson11.bonus01; 2 | 3 | /* Нужно исправить программу, чтобы компилировалась и работала 4 | Исправь наследование в классах: (классы Cat, Dog, Pat, House, Airplane). 5 | */ 6 | 7 | class Solution { 8 | 9 | class Pet { 10 | 11 | } 12 | 13 | private class Cat extends Pet { 14 | 15 | } 16 | 17 | private class Dog extends Pet { 18 | 19 | } 20 | 21 | private class House { 22 | 23 | } 24 | 25 | private class Airplane { 26 | 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/com/javarush/test/level11/lesson11/bonus02/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level11.lesson11.bonus02; 2 | 3 | /* Нужно добавить в программу новую функциональность 4 | Добавь общий базовый класс к классам-фигур: (фигуры из шахмат). 5 | */ 6 | 7 | class Solution { 8 | 9 | class ChessFigure { 10 | 11 | } 12 | 13 | private class King extends ChessFigure { 14 | 15 | } 16 | 17 | private class Queen extends ChessFigure { 18 | 19 | } 20 | 21 | private class Rook extends ChessFigure { 22 | 23 | } 24 | 25 | private class Knight extends ChessFigure { 26 | 27 | } 28 | 29 | private class Bishop extends ChessFigure { 30 | 31 | } 32 | 33 | private class Pawn extends ChessFigure { 34 | 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/com/javarush/test/level11/lesson11/home01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level11.lesson11.home01; 2 | 3 | /* Адам и Ева 4 | Написать два класса Adam(Адам) и Eve(Ева). 5 | Унаследовать Еву от Адама. 6 | */ 7 | 8 | class Solution { 9 | 10 | //Адам 11 | class Adam { 12 | 13 | } 14 | 15 | //Ева 16 | private class Eve extends Adam { 17 | 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/com/javarush/test/level11/lesson11/home02/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level11.lesson11.home02; 2 | 3 | /* AppleIPhone и SamsungGalaxyS2 4 | Написать два класса AppleIPhone и SamsungGalaxyS2. 5 | Унаследовать SamsungGalaxyS2 от AppleIPhone. 6 | */ 7 | 8 | class Solution { 9 | 10 | class AppleIPhone { 11 | 12 | } 13 | 14 | private class SamsungGalaxyS2 extends AppleIPhone { 15 | 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/com/javarush/test/level11/lesson11/home03/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level11.lesson11.home03; 2 | 3 | /* Эволюция 4 | Написать четыре класса: Fish(Рыбы), Animal(Животные), Ape(Обезьяны), Human (Человек). 5 | Унаследовать животных от рыб, обезьян от животных и человека от обезьян. 6 | */ 7 | 8 | class Solution { 9 | 10 | class Fish { 11 | 12 | } 13 | 14 | class Animal extends Fish { 15 | 16 | } 17 | 18 | class Ape extends Animal { 19 | 20 | } 21 | 22 | private class Human extends Ape { 23 | 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /src/com/javarush/test/level11/lesson11/home04/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level11.lesson11.home04; 2 | 3 | /* Религии 4 | Написать три класса: Judaism(Иудаизм), Christianity(Христианство), Islam(Мусульманство) 5 | Унаследовать христианство от иудаизма и мусульманство от христианства. 6 | */ 7 | 8 | class Solution { 9 | 10 | class Judaism { 11 | 12 | } 13 | 14 | class Christianity extends Judaism { 15 | 16 | } 17 | 18 | private class Islam extends Christianity { 19 | 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /src/com/javarush/test/level11/lesson11/home05/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level11.lesson11.home05; 2 | 3 | /* От школьника к рабству 4 | Написать четыре класса: Schoolboy(школьник), Student(студент), Worker(Сотрудник), Slave (Раб) 5 | Унаследовать студента от школьника, сотрудника от студента, раба от сотрудника. 6 | */ 7 | 8 | class Solution { 9 | 10 | class Schoolboy { 11 | 12 | } 13 | 14 | class Student extends Schoolboy { 15 | 16 | } 17 | 18 | class Worker extends Student { 19 | 20 | } 21 | 22 | private class Slave extends Worker { 23 | 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /src/com/javarush/test/level11/lesson11/home06/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level11.lesson11.home06; 2 | 3 | /* Первая правильная «цепочка наследования» 4 | Расставь правильно «цепочку наследования» в классах: Pet (домашнее животное), Cat (кот), Dog(собака). 5 | */ 6 | 7 | class Solution { 8 | 9 | class Pet { 10 | 11 | } 12 | 13 | private class Cat extends Pet { 14 | 15 | } 16 | 17 | private class Dog extends Pet { 18 | 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/com/javarush/test/level11/lesson11/home07/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level11.lesson11.home07; 2 | 3 | /* Вторая правильная «цепочка наследования» 4 | Расставь правильно «цепочку наследования» в классах: Carnivora (плотоядное животное), Cow (корова), Dog(собака), Pig(свинья), Animal (животное). 5 | */ 6 | 7 | class Solution { 8 | 9 | class Carnivora extends Animal { 10 | 11 | } 12 | 13 | private class Cow extends Animal { 14 | 15 | } 16 | 17 | private class Dog extends Carnivora { 18 | 19 | } 20 | 21 | private class Pig extends Animal { 22 | 23 | } 24 | 25 | class Animal { 26 | 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/com/javarush/test/level11/lesson11/home08/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level11.lesson11.home08; 2 | 3 | /* Третья правильная «цепочка наследования» 4 | Расставь правильно «цепочку наследования» в классах: Pet (домашнее животное), Cat (кот), Dog(собака), Car (машина). 5 | */ 6 | 7 | class Solution { 8 | 9 | class Pet { 10 | 11 | } 12 | 13 | private class Cat extends Pet { 14 | 15 | } 16 | 17 | private class Car { 18 | 19 | } 20 | 21 | private class Dog extends Pet { 22 | 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/com/javarush/test/level11/lesson11/home09/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level11.lesson11.home09; 2 | 3 | /* Четвертая правильная «цепочка наследования» 4 | Расставь правильно «цепочку наследования» в классах: House (дом), Cat (кот), Dog(собака), Car (машина). 5 | */ 6 | 7 | class Solution { 8 | 9 | private class House { 10 | 11 | } 12 | 13 | private class Cat { 14 | 15 | } 16 | 17 | private class Car { 18 | 19 | } 20 | 21 | private class Dog { 22 | 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/com/javarush/test/level11/lesson11/home10/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level11.lesson11.home10; 2 | 3 | /* Пятая правильная «цепочка наследования» 4 | Расставь правильно «цепочку наследования» в классах: House (дом), Cat (кот), Dog(собака), Car (машина), Animal(животное), Assets (имущество). 5 | */ 6 | 7 | class Solution { 8 | 9 | private class House extends Assets { 10 | 11 | } 12 | 13 | private class Cat extends Animal { 14 | 15 | } 16 | 17 | private class Car extends Assets { 18 | 19 | } 20 | 21 | private class Dog extends Animal { 22 | 23 | } 24 | 25 | class Animal { 26 | 27 | } 28 | 29 | class Assets { 30 | 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/com/javarush/test/level12/lesson02/task01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level12.lesson02.task01; 2 | 3 | /* Я не корова, Я - кит. 4 | Переопределить метод getName в классе Whale(Кит), чтобы программа выдавала: 5 | Я не корова, Я - кит. 6 | */ 7 | 8 | class Solution { 9 | 10 | public static void main(String[] args) { 11 | Cow cow = new Whale(); 12 | 13 | System.out.println(cow.getName()); 14 | } 15 | 16 | static class Cow { 17 | 18 | String getName() { 19 | return "Я - корова"; 20 | } 21 | } 22 | 23 | static class Whale extends Cow { 24 | 25 | public String getName() { 26 | return "Я не корова, Я - кит."; 27 | } 28 | 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/com/javarush/test/level12/lesson02/task02/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level12.lesson02.task02; 2 | 3 | /* Ничего не выводится на экран 4 | Переопределить метод getName в классе Whale(Кит), чтобы программа ничего не выдавала на экран. 5 | */ 6 | 7 | class Solution { 8 | 9 | public static void main(String[] args) { 10 | Cow cow = new Whale(); 11 | 12 | System.out.println(cow.getName()); 13 | } 14 | 15 | static class Cow { 16 | 17 | String getName() { 18 | return "Я - корова"; 19 | } 20 | } 21 | 22 | static class Whale extends Cow { 23 | 24 | public String getName() { 25 | return ""; 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/com/javarush/test/level12/lesson02/task03/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level12.lesson02.task03; 2 | 3 | /* Кот от кота, а собака от собаки 4 | Переопределить метод getChild в классах Cat(кот) и Dog(собака), чтобы кот порождал кота, а собака – собаку. 5 | */ 6 | 7 | public class Solution { 8 | 9 | public static void main(String[] args) { 10 | Pet pet1 = new Cat(); 11 | Pet cat = pet1.getChild(); 12 | 13 | Pet pet2 = new Dog(); 14 | Pet dog = pet2.getChild(); 15 | } 16 | 17 | static class Pet { 18 | 19 | Pet getChild() { 20 | return new Pet(); 21 | } 22 | } 23 | 24 | public static class Cat extends Pet { 25 | 26 | public Cat getChild() { 27 | return new Cat(); 28 | } 29 | 30 | } 31 | 32 | public static class Dog extends Pet { 33 | 34 | public Dog getChild() { 35 | return new Dog(); 36 | } 37 | 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/com/javarush/test/level12/lesson04/task01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level12.lesson04.task01; 2 | 3 | /* print(int) и print(String) 4 | Написать два метода: print(int) и print(String). 5 | */ 6 | 7 | class Solution { 8 | 9 | void print(int a) { 10 | System.out.print(a); 11 | } 12 | 13 | void print(String a) { 14 | System.out.print(a); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/com/javarush/test/level12/lesson04/task02/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level12.lesson04.task02; 2 | 3 | /* print(int) и print(Integer) 4 | Написать два метода: print(int) и print(Integer). 5 | Написать такой код в методе main, чтобы вызвались они оба. 6 | */ 7 | 8 | class Solution { 9 | 10 | public static void main(String[] args) { 11 | Integer big = 85; 12 | int a = 21; 13 | print(a); 14 | print(big); 15 | 16 | } 17 | 18 | private static void print(int a) { 19 | System.out.print(a); 20 | } 21 | 22 | private static void print(Integer a) { 23 | System.out.print(a); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/com/javarush/test/level12/lesson04/task03/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level12.lesson04.task03; 2 | 3 | /* Пять методов print с разными параметрами 4 | Написать пять методов print с разными параметрами. 5 | */ 6 | 7 | class Solution { 8 | 9 | void print(int a) { 10 | System.out.println(a); 11 | } 12 | 13 | void print(float a) { 14 | System.out.println(a); 15 | } 16 | 17 | void print(double a) { 18 | System.out.println(a); 19 | } 20 | 21 | void print(char a) { 22 | System.out.println(a); 23 | } 24 | 25 | void print(String a) { 26 | System.out.println(a); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/com/javarush/test/level12/lesson04/task04/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level12.lesson04.task04; 2 | 3 | /* Три метода возвращают минимальное из двух переданных в него чисел 4 | Написать public static методы: int min(int, int), long min(long, long), double min(double, double). 5 | Каждый метод должен возвращать минимальное из двух переданных в него чисел. 6 | */ 7 | 8 | class Solution { 9 | 10 | public static int min(int a, int b) { 11 | if (a < b) { 12 | return a; 13 | } else { 14 | return b; 15 | } 16 | } 17 | 18 | public static long min(long a, long b) { 19 | if (a < b) { 20 | return a; 21 | } else { 22 | return b; 23 | } 24 | } 25 | 26 | public static double min(double a, double b) { 27 | if (a < b) { 28 | return a; 29 | } else { 30 | return b; 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/com/javarush/test/level12/lesson04/task05/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level12.lesson04.task05; 2 | 3 | /* Три метода возвращают максимальное из двух переданных в него чисел 4 | Написать public static методы: int max(int, int), long max (long, long), double max (double, double). 5 | Каждый метод должен возвращать максимальное из двух переданных в него чисел. 6 | */ 7 | 8 | class Solution { 9 | 10 | public static int max(int a, int b) { 11 | if (a < b) { 12 | return b; 13 | } else { 14 | return a; 15 | } 16 | } 17 | 18 | public static long max(long a, long b) { 19 | if (a < b) { 20 | return b; 21 | } else { 22 | return a; 23 | } 24 | } 25 | 26 | public static double max(double a, double b) { 27 | if (a < b) { 28 | return b; 29 | } else { 30 | return a; 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/com/javarush/test/level12/lesson06/task01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level12.lesson06.task01; 2 | 3 | /* Абстрактный класс Pet 4 | Сделать класс Pet абстрактным. 5 | */ 6 | 7 | class Solution { 8 | 9 | private static abstract class Pet { 10 | 11 | @SuppressWarnings("SameReturnValue") 12 | public String getName() { 13 | return "Я - котенок"; 14 | } 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /src/com/javarush/test/level12/lesson06/task02/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level12.lesson06.task02; 2 | 3 | /* Исправь код. Первая задача 4 | Исправь код, чтобы программа компилировалась. 5 | */ 6 | 7 | public class Solution { 8 | 9 | 10 | public static abstract class Pet { 11 | 12 | @SuppressWarnings("SameReturnValue") 13 | public String getName() { 14 | return "Я - котенок"; 15 | } 16 | 17 | public abstract Pet getChild(); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/com/javarush/test/level12/lesson06/task03/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level12.lesson06.task03; 2 | 3 | /* Исправь код. Вторая задача 4 | Исправь код, чтобы программа компилировалась. 5 | */ 6 | 7 | public class Solution { 8 | 9 | public static abstract class Pet { 10 | 11 | @SuppressWarnings("SameReturnValue") 12 | public String getName() { 13 | return "Я - котенок"; 14 | } 15 | 16 | public abstract Pet getChild(); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/com/javarush/test/level12/lesson06/task04/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level12.lesson06.task04; 2 | 3 | /* Класс Cow от Animal 4 | Унаследуй класс Cow от Animal. 5 | Реализуй все недостающие методы в классе Cow. 6 | */ 7 | 8 | public class Solution { 9 | 10 | static abstract class Animal { 11 | 12 | @SuppressWarnings("SameReturnValue") 13 | public abstract String getName(); 14 | } 15 | 16 | public static class Cow extends Animal { 17 | 18 | public String getName() { 19 | return "Hi!"; 20 | } 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /src/com/javarush/test/level12/lesson06/task05/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level12.lesson06.task05; 2 | 3 | /* Классы Cat и Dog от Pet 4 | Унаследуй классы Cat и Dog от Pet. 5 | Реализуй недостающие методы. Классы Cat и Dog не должны быть абстрактными. 6 | */ 7 | 8 | public class Solution { 9 | 10 | public static abstract class Pet { 11 | 12 | public abstract String getName(); 13 | 14 | public abstract Pet getChild(); 15 | } 16 | 17 | public static class Cat extends Pet { 18 | 19 | public String getName() { 20 | return "Cat!"; 21 | } 22 | 23 | public Cat getChild() { 24 | return new Cat(); 25 | } 26 | 27 | } 28 | 29 | public static class Dog extends Pet { 30 | 31 | public String getName() { 32 | return "Dog!"; 33 | } 34 | 35 | public Dog getChild() { 36 | return new Dog(); 37 | } 38 | 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /src/com/javarush/test/level12/lesson09/task01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level12.lesson09.task01; 2 | 3 | /* Интерфейс Fly 4 | Напиши свой public интерфейс Fly(летать). Добавь в него два метода. 5 | */ 6 | 7 | class Solution { 8 | 9 | public interface Fly { 10 | 11 | boolean canFly(); 12 | 13 | int wingsNumber(); 14 | 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /src/com/javarush/test/level12/lesson09/task02/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level12.lesson09.task02; 2 | 3 | /* Интерфейсы Fly, Run, Swim 4 | Напиши public интерфейсы Fly(летать), Run(бежать/ездить), Swim(плавать). 5 | Добавить в каждый интерфейс по одному методу. 6 | */ 7 | 8 | class Solution { 9 | 10 | public interface Fly { 11 | 12 | boolean canFly(); 13 | } 14 | 15 | public interface Run { 16 | 17 | int getSpeed(); 18 | } 19 | 20 | public interface Swim { 21 | 22 | int getSpeed(); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/com/javarush/test/level12/lesson09/task05/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level12.lesson09.task05; 2 | 3 | /* Класс Human и интерфейсы Run, Swim 4 | Напиши public класс Human(человек) и public интерфейсы Run(бежать/ездить), Swim(плавать). 5 | Добавь в каждый интерфейс по одному методу. 6 | Добавь эти интерфейсы классу Human, но не реализуй методы. 7 | Объяви класс Human абстрактным. 8 | */ 9 | 10 | public class Solution { 11 | 12 | private interface Run { 13 | 14 | } 15 | 16 | private interface Swim { 17 | 18 | } 19 | 20 | public abstract class Human implements Run, Swim { 21 | 22 | public abstract void run(); 23 | 24 | public abstract void swim(); 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /src/com/javarush/test/level12/lesson12/bonus01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level12.lesson12.bonus01; 2 | 3 | /* Нужно исправить программу, чтобы компилировалась и работала 4 | Расставить правильно ключевые слова abstract, чтобы программа компилировалась (там где надо и не надо). 5 | */ 6 | 7 | public class Solution { 8 | 9 | public static void main(String[] args) { 10 | Horse horse = new Pegas(); 11 | horse.run(); 12 | } 13 | 14 | private interface Fly { 15 | 16 | } 17 | 18 | static abstract class Horse { 19 | 20 | @SuppressWarnings("EmptyMethod") 21 | void run() { 22 | } 23 | } 24 | 25 | static class Pegas extends Horse implements Fly { 26 | 27 | } 28 | 29 | public static abstract class SwimPegas extends Pegas { 30 | 31 | public abstract void swim(); 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /src/com/javarush/test/level12/lesson12/bonus02/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level12.lesson12.bonus02; 2 | 3 | /* Нужно добавить в программу новую функциональность 4 | Сделать класс Pegas(пегас) на основе класса Horse(лошадь) и интерфейса Fly(летать). 5 | */ 6 | 7 | class Solution { 8 | 9 | public static void main(String[] args) { 10 | Pegas horse = new Pegas(); 11 | } 12 | 13 | private interface Fly { 14 | 15 | } 16 | 17 | static class Horse { 18 | 19 | } 20 | 21 | private static class Pegas extends Horse implements Fly { 22 | 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/com/javarush/test/level12/lesson12/home01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level12.lesson12.home01; 2 | 3 | /* Метод getName в классе Cat 4 | Переопредели метод getName в классе Cat так, чтобы программа выдавала на экран надпись 5 | «Я - кот». 6 | */ 7 | 8 | class Solution { 9 | 10 | public static void main(String[] args) { 11 | Pet pet = new Cat(); 12 | 13 | System.out.println(pet.getName()); 14 | } 15 | 16 | static class Pet { 17 | 18 | String getName() { 19 | return "Я - пушистик"; 20 | } 21 | } 22 | 23 | static class Cat extends Pet { 24 | 25 | public String getName() { 26 | return "Я - кот"; 27 | } 28 | 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/com/javarush/test/level12/lesson12/home02/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level12.lesson12.home02; 2 | 3 | /* Метод setName в классе Cat 4 | Переопредели метод setName в классе Cat так, чтобы программа выдавала на экран надпись 5 | «Я - кот». 6 | */ 7 | 8 | class Solution { 9 | 10 | public static void main(String[] args) { 11 | Pet pet = new Cat(); 12 | pet.setName("Я - пушистик"); 13 | 14 | System.out.println(pet.getName()); 15 | } 16 | 17 | static class Pet { 18 | 19 | String name; 20 | 21 | Pet() { 22 | } 23 | 24 | String getName() { 25 | return name; 26 | } 27 | 28 | void setName(String name) { 29 | this.name = name; 30 | } 31 | 32 | } 33 | 34 | static class Cat extends Pet { 35 | 36 | public void setName(String name) { 37 | this.name = "Я - кот"; 38 | } 39 | 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/com/javarush/test/level12/lesson12/home03/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level12.lesson12.home03; 2 | 3 | /* Добавь один метод в класс Cat 4 | Добавь один метод в класс Cat так, чтобы программа ничего не выводила на экран. 5 | */ 6 | 7 | class Solution { 8 | 9 | public static void main(String[] args) { 10 | Pet pet = new Cat(); 11 | pet.setName("Я - пушистик"); 12 | 13 | System.out.println(pet.getName()); 14 | } 15 | 16 | static class Pet { 17 | 18 | String name; 19 | 20 | Pet() { 21 | } 22 | 23 | final String getName() { 24 | return name; 25 | } 26 | 27 | void setName(String name) { 28 | this.name = name; 29 | } 30 | 31 | } 32 | 33 | static class Cat extends Pet { 34 | 35 | public void setName(String name) { 36 | this.name = ""; 37 | } 38 | 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/com/javarush/test/level12/lesson12/home08/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level12.lesson12.home08; 2 | 3 | /* Интерфейсы к классу Human 4 | Добавь как можно больше интерфейсов к классу Human, но чтобы он не стал абстрактным классом. 5 | Добавлять методы в класс Human запрещается. 6 | */ 7 | 8 | class Solution { 9 | 10 | public static void main(String[] args) { 11 | Human human = new Human(); 12 | System.out.println(human); 13 | } 14 | 15 | private interface Worker { 16 | 17 | } 18 | 19 | private interface Businessman { 20 | 21 | } 22 | 23 | private interface Secretary { 24 | 25 | } 26 | 27 | public interface Miner { 28 | 29 | void workVeryHard(); 30 | } 31 | 32 | static class Human implements Businessman, Worker, Secretary { 33 | 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/com/javarush/test/level12/lesson12/home09/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level12.lesson12.home09; 2 | 3 | /* Родитель класса CTO 4 | Добавь такой класс-родитель к классу CTO(технический директор), чтобы класс перестал быть абстрактным. 5 | Добавлять/реализовывать методы в классе CTO запрещается. 6 | */ 7 | 8 | public class Solution { 9 | 10 | public static void main(String[] args) { 11 | CTO cto = new CTO(); 12 | System.out.println(cto); 13 | } 14 | 15 | interface Businessman { 16 | 17 | void workHard(); 18 | } 19 | 20 | public static class Director implements Businessman { 21 | 22 | public void workHard() { 23 | System.out.print("I'm working hard!"); 24 | } 25 | } 26 | 27 | private static class CTO extends Director implements Businessman { 28 | 29 | } 30 | 31 | 32 | } 33 | -------------------------------------------------------------------------------- /src/com/javarush/test/level12/lesson12/home10/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level12.lesson12.home10; 2 | 3 | /* Метод, который выводит на экран число 10 4 | Добавь еще один метод, чтобы программа выводила на экран число 10. 5 | Подсказка: используй перегрузку методов. 6 | */ 7 | 8 | class Solution { 9 | 10 | public static void main(String[] args) { 11 | Integer i = 5; 12 | int x = transformValue(i); 13 | 14 | System.out.println(x); 15 | } 16 | 17 | public static int transformValue(int i) { 18 | return i * i; 19 | } 20 | 21 | private static int transformValue(Integer i) { 22 | return i + i; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/com/javarush/test/level13/lesson02/task02/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level13.lesson02.task02; 2 | 3 | /* Пиво: возвращение 4 | Добавь к классу Beer интерфейс Drink и реализуй все нереализованные методы. 5 | */ 6 | 7 | public class Solution { 8 | 9 | public static void main(String[] args) { 10 | Drink beer = new Beer(); 11 | System.out.println(beer.toString()); 12 | } 13 | 14 | interface Drink { 15 | 16 | @SuppressWarnings("SameReturnValue") 17 | boolean isAlcoholic(); 18 | } 19 | 20 | public static class Beer implements Drink { 21 | 22 | @Override 23 | public String toString() { 24 | if (isAlcoholic()) { 25 | return "Напиток алкогольный"; 26 | } else { 27 | return "Напиток безалкогольный"; 28 | } 29 | } 30 | 31 | public boolean isAlcoholic() { 32 | return true; 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/com/javarush/test/level13/lesson02/task03/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level13.lesson02.task03; 2 | 3 | /* Пиво и кола 4 | Реализуй интерфейс Drink в классах Beer и Cola. 5 | */ 6 | 7 | public class Solution { 8 | 9 | public static void main(String[] args) { 10 | 11 | print(new Beer()); 12 | print(new Cola()); 13 | 14 | } 15 | 16 | private static void print(Drink drink) { 17 | System.out.println(drink.getClass().getSimpleName()); 18 | } 19 | 20 | interface Drink { 21 | 22 | boolean isAlcoholic(); 23 | } 24 | 25 | public static class Beer implements Drink { 26 | 27 | public boolean isAlcoholic() { 28 | return true; 29 | } 30 | } 31 | 32 | public static class Cola implements Drink { 33 | 34 | public boolean isAlcoholic() { 35 | return false; 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/com/javarush/test/level13/lesson02/task04/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level13.lesson02.task04; 2 | 3 | /* Selectable и Updatable 4 | 1. Создай класс Screen. 5 | 2. Реализуй в нем интерфейсы Selectable с методом onSelect, Updatable с методом refresh. 6 | */ 7 | 8 | public class Solution { 9 | 10 | interface Selectable { 11 | 12 | void onSelect(); 13 | } 14 | 15 | interface Updatable { 16 | 17 | void refresh(); 18 | } 19 | 20 | public class Screen implements Selectable, Updatable { 21 | 22 | public void onSelect() { 23 | System.out.println("On select!"); 24 | } 25 | 26 | public void refresh() { 27 | System.out.println("Refreshing!"); 28 | } 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /src/com/javarush/test/level13/lesson02/task05/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level13.lesson02.task05; 2 | 3 | /* 4 ошибки 4 | Исправь 4 ошибки в программе, чтобы она компилировалась. 5 | */ 6 | 7 | public class Solution { 8 | 9 | public static void main(String[] args) { 10 | 11 | new Hobbie(); 12 | System.out.println(Dream.HOBBIE.toString()); 13 | System.out.println(new Hobbie().toString()); 14 | 15 | } 16 | 17 | private interface Desire { 18 | 19 | } 20 | 21 | interface Dream { 22 | 23 | Hobbie HOBBIE = new Hobbie(); 24 | } 25 | 26 | static class Hobbie implements Dream, Desire { 27 | 28 | static int INDEX = 1; 29 | 30 | @Override 31 | public String toString() { 32 | INDEX++; 33 | return "" + INDEX; 34 | } 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /src/com/javarush/test/level13/lesson02/task07/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level13.lesson02.task07; 2 | 3 | /* Параметризованый интерфейс 4 | В классе StringObject реализуй интерфейс SimpleObject с параметром типа String. 5 | */ 6 | 7 | public class Solution { 8 | 9 | interface SimpleObject { 10 | 11 | SimpleObject getInstance(); 12 | } 13 | 14 | class StringObject implements SimpleObject { 15 | 16 | public SimpleObject getInstance() { 17 | return new StringObject(); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/com/javarush/test/level13/lesson02/task08/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level13.lesson02.task08; 2 | 3 | /* Жив или нет 4 | 1. Создай интерфейс Person. 5 | 2. Добавь в него метод isAlive(), который проверяет, жив человек или нет. 6 | 3. Подумай, какой тип должен возвращать этот метод. 7 | 4. Создай интерфейс Presidentable. 8 | 5. Унаследуй интерфейс Presidentable от интерфейса Person. 9 | */ 10 | 11 | class Solution { 12 | 13 | private interface Person { 14 | 15 | boolean isAlive(); 16 | } 17 | 18 | public interface Presidentable extends Person { 19 | 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/com/javarush/test/level13/lesson02/task09/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level13.lesson02.task09; 2 | 3 | /* Наследование интерфейса 4 | 1. Создать интерфейс Movable с методом speed. 5 | 2. Метод speed возвращает значение типа Double и не принимает параметров. 6 | 3. Создать и унаследовать интерфейс Runable от интерфейса Movable. 7 | 4. Добавить в интерфейс Runable метод speed. 8 | 5. Метод speed возвращает значение типа Double и принимает один параметр типа Runable. 9 | */ 10 | 11 | class Solution { 12 | 13 | private interface Movable { 14 | 15 | Double speed(); 16 | } 17 | 18 | private interface Runable extends Movable { 19 | 20 | Double speed(Runable o); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/com/javarush/test/level13/lesson04/task02/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level13.lesson04.task02; 2 | 3 | /* Исправление кода 4 | Исправить код так, чтобы программа выполнялась и выводила "Я переводчик с английского". 5 | Метод main менять нельзя! 6 | */ 7 | 8 | class Solution { 9 | 10 | public static void main(String[] args) { 11 | Translator translator = new Translator(); 12 | System.out.println(translator.translate()); 13 | } 14 | 15 | static class Translator { 16 | 17 | @SuppressWarnings("SameReturnValue") 18 | String translate() { 19 | return "Я переводчик с английского"; 20 | } 21 | } 22 | 23 | 24 | } 25 | -------------------------------------------------------------------------------- /src/com/javarush/test/level13/lesson04/task03/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level13.lesson04.task03; 2 | 3 | import java.awt.Color; 4 | 5 | /* Интерфейс Animal 6 | 1. Унаследовать Fox от интерфейса Animal. 7 | 2. Поменяй код так, чтобы в классе Fox был только один метод - getName. 8 | 3. Методы удалять нельзя! 9 | */ 10 | 11 | class Solution { 12 | 13 | private interface Animal { 14 | 15 | Color getColor(); 16 | } 17 | 18 | private static abstract class Fox implements Animal { 19 | 20 | @SuppressWarnings("SameReturnValue") 21 | public String getName() { 22 | return "Fox"; 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/com/javarush/test/level13/lesson06/task01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level13.lesson06.task01; 2 | 3 | /* Dog, Cat и Mouse 4 | 1. Создать классы Dog, Cat и Mouse. 5 | 2. Реализовать интерфейсы в добавленных классах, учитывая что: 6 | - Кот(Cat) может передвигаться, может кого-то съесть и может быть сам съеден. 7 | - Мышь(Mouse) может передвигаться и может быть съедена. 8 | - Собака(Dog) может передвигаться и съесть кого-то. 9 | */ 10 | 11 | class Solution { 12 | 13 | private interface Moveable //может двигаться 14 | { 15 | 16 | } 17 | 18 | private interface Eatable //может быть съеден 19 | { 20 | 21 | } 22 | 23 | private interface Eat //может кого-нибудь съесть 24 | { 25 | 26 | } 27 | 28 | private class Cat implements Moveable, Eatable, Eat { 29 | 30 | } 31 | 32 | private class Mouse implements Moveable, Eatable { 33 | 34 | } 35 | 36 | private class Dog implements Moveable, Eat { 37 | 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/com/javarush/test/level13/lesson11/bonus02/Person.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level13.lesson11.bonus02; 2 | 3 | public class Person implements RepkaItem { 4 | 5 | private final String name; 6 | private final String namePadezh; 7 | 8 | public Person(String name, String namePadezh) { 9 | this.name = name; 10 | this.namePadezh = namePadezh; 11 | } 12 | 13 | public String getNamePadezh() { 14 | return namePadezh; 15 | } 16 | 17 | public void pull(Person person) { 18 | System.out.println(this.name + " за " + person.getNamePadezh()); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/com/javarush/test/level13/lesson11/bonus02/RepkaItem.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level13.lesson11.bonus02; 2 | 3 | interface RepkaItem { 4 | 5 | String getNamePadezh(); 6 | } 7 | -------------------------------------------------------------------------------- /src/com/javarush/test/level13/lesson11/bonus02/RepkaStory.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level13.lesson11.bonus02; 2 | 3 | import java.util.List; 4 | 5 | class RepkaStory { 6 | 7 | static void tell(List items) { 8 | 9 | Person first; 10 | Person second; 11 | for (int i = items.size() - 1; i > 0; i--) { 12 | first = items.get(i); 13 | second = items.get(i - 1); 14 | first.pull(second); 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/com/javarush/test/level13/lesson11/bonus02/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level13.lesson11.bonus02; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | /* Репка 7 | Сказка Репка: 8 | 1. Реализовать интерфейс RepkaItem в классе Person. 9 | 2. В классе Person реализовать метод pull(Person person), который выводит фразу типа ' за '. Пример: 10 | Бабка за Дедку 11 | Дедка за Репку 12 | 3. Исправить логическую ошибку цикла в методе tell класса RepkaStory. 13 | 4. Выполнить метод main и наслаждаться сказкой! 14 | */ 15 | 16 | class Solution { 17 | 18 | public static void main(String[] args) { 19 | List plot = new ArrayList<>(); 20 | plot.add(new Person("Репка", "Репку")); 21 | plot.add(new Person("Дедка", "Дедку")); 22 | plot.add(new Person("Бабка", "Бабку")); 23 | plot.add(new Person("Внучка", "Внучку")); 24 | RepkaStory.tell(plot); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/com/javarush/test/level13/lesson11/bonus03/Attackable.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level13.lesson11.bonus03; 2 | 3 | interface Attackable { 4 | 5 | BodyPart attack(); 6 | } 7 | -------------------------------------------------------------------------------- /src/com/javarush/test/level13/lesson11/bonus03/BodyPart.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level13.lesson11.bonus03; 2 | 3 | public final class BodyPart { 4 | 5 | final static BodyPart LEG = new BodyPart("нога"); 6 | final static BodyPart HEAD = new BodyPart("голова"); 7 | final static BodyPart ARM = new BodyPart("рука"); 8 | final static BodyPart CHEST = new BodyPart("грудь"); 9 | 10 | private final String bodyPart; 11 | 12 | private BodyPart(String bodyPart) { 13 | this.bodyPart = bodyPart; 14 | } 15 | 16 | @Override 17 | public String toString() { 18 | return this.bodyPart; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/com/javarush/test/level13/lesson11/bonus03/Defensable.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level13.lesson11.bonus03; 2 | 3 | interface Defensable { 4 | 5 | BodyPart defense(); 6 | } 7 | -------------------------------------------------------------------------------- /src/com/javarush/test/level13/lesson11/bonus03/Robot.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level13.lesson11.bonus03; 2 | 3 | class Robot extends AbstractRobot { 4 | 5 | private final String name; 6 | 7 | Robot(String name) { 8 | this.name = name; 9 | } 10 | 11 | public String getName() { 12 | return name; 13 | } 14 | 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/com/javarush/test/level13/lesson11/home01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level13.lesson11.home01; 2 | 3 | /* Некорректные строки 4 | Удали все некорректные строки в интерфейсе Button. 5 | */ 6 | 7 | class Solution { 8 | 9 | public static void main(String[] args) { 10 | System.out.println(SimpleObject.NAME); 11 | System.out.println(Button.NAME); 12 | } 13 | 14 | interface SimpleObject { 15 | 16 | String NAME = "SimpleObject"; 17 | 18 | void onPress(); 19 | } 20 | 21 | interface Button extends SimpleObject { 22 | 23 | String NAME = "Submit"; 24 | 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/com/javarush/test/level13/lesson11/home02/Weather.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level13.lesson11.home02; 2 | 3 | interface Weather { 4 | 5 | String getWeatherType(); 6 | } 7 | -------------------------------------------------------------------------------- /src/com/javarush/test/level13/lesson11/home02/WeatherType.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level13.lesson11.home02; 2 | 3 | interface WeatherType { 4 | 5 | String CLOUDY = "Cloudy"; 6 | String FOGGY = "Foggy"; 7 | String FROZEN = "Frozen"; 8 | } 9 | -------------------------------------------------------------------------------- /src/com/javarush/test/level13/lesson11/home06/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level13.lesson11.home06; 2 | 3 | /* Исправление ошибок 4 | 1. Переделай наследование в классах и интерфейсах так, чтобы программа компилировалась и продолжала делать то же самое. 5 | 2. Класс Hobbie должен наследоваться от интерфейсов Desire, Dream. 6 | */ 7 | 8 | public class Solution { 9 | 10 | public static void main(String[] args) { 11 | System.out.println(Dream.HOBBIE.toString()); 12 | System.out.println(Hobbie.INDEX); 13 | } 14 | 15 | private interface Desire { 16 | 17 | } 18 | 19 | interface Dream { 20 | 21 | Hobbie HOBBIE = new Hobbie(); 22 | } 23 | 24 | static class Hobbie implements Desire, Dream { 25 | 26 | static int INDEX = 1; 27 | 28 | @Override 29 | public String toString() { 30 | INDEX++; 31 | return "" + INDEX; 32 | } 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /src/com/javarush/test/level13/lesson11/home07/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level13.lesson11.home07; 2 | 3 | /* Интерфейс SimpleObject 4 | 1. Создай класс StringObject. 5 | 2. В классе StringObject реализуй интерфейс SimpleObject с параметром типа String. 6 | 3. Программа должна компилироваться. 7 | */ 8 | 9 | public class Solution { 10 | 11 | public static void main(String[] args) { 12 | SimpleObject stringObject = new StringObject<>(); 13 | } 14 | 15 | interface SimpleObject { 16 | 17 | SimpleObject getInstance(); 18 | } 19 | 20 | public static class StringObject implements SimpleObject { 21 | 22 | public SimpleObject getInstance() { 23 | return new StringObject(); 24 | } 25 | 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /src/com/javarush/test/level13/lesson11/home08/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level13.lesson11.home08; 2 | 3 | /* Интерфейс Updatable в классе Screen 4 | Реализовать интерфейс Updatable в классе Screen. 5 | */ 6 | 7 | class Solution { 8 | 9 | private interface Selectable { 10 | 11 | } 12 | 13 | private interface Updatable extends Selectable { 14 | 15 | } 16 | 17 | private class Screen implements Updatable { 18 | 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/com/javarush/test/level13/lesson11/home09/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level13.lesson11.home09; 2 | 3 | import java.awt.Color; 4 | 5 | /* Один метод в классе 6 | 1. Унаследовать Fox от интерфейса Animal. 7 | 2. Поменяй код так, чтобы в классе Fox был только один метод - getName. 8 | 3. Методы удалять нельзя! 9 | */ 10 | 11 | class Solution { 12 | 13 | private interface Animal { 14 | 15 | Color getColor(); 16 | 17 | Integer getAge(); 18 | } 19 | 20 | private static abstract class Fox implements Animal { 21 | 22 | @SuppressWarnings("SameReturnValue") 23 | public String getName() { 24 | return "Fox"; 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/com/javarush/test/level14/lesson02/task01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level14.lesson02.task01; 2 | 3 | /* Bingo 4 | Исправь строчку 'Object o = new Pet();' в методе main так, чтобы программа вывела "Bingo!" 5 | */ 6 | 7 | class Solution { 8 | 9 | @SuppressWarnings("ConstantConditions") 10 | public static void main(String[] args) { 11 | Object o = new Tiger(); 12 | boolean isCat = o instanceof Cat; 13 | boolean isTiger = o instanceof Tiger; 14 | boolean isPet = o instanceof Pet; 15 | 16 | printResults(isCat, isTiger, isPet); 17 | } 18 | 19 | private static void printResults(boolean cat, boolean tiger, boolean pet) { 20 | if (cat && tiger && pet) { 21 | System.out.println("Bingo!"); 22 | } 23 | } 24 | 25 | static class Pet { 26 | 27 | } 28 | 29 | static class Cat extends Pet { 30 | 31 | } 32 | 33 | private static class Tiger extends Cat { 34 | 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /src/com/javarush/test/level14/lesson02/task02/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level14.lesson02.task02; 2 | 3 | /* Bingo-2 4 | Исправь строчку 'Cat o = new Cat();' так, чтобы программа вывела "Bingo!" 5 | */ 6 | 7 | class Solution { 8 | 9 | public static void main(String[] args) { 10 | Cat o = new TomCat(); 11 | 12 | //noinspection ConstantConditions 13 | boolean isCat = o instanceof Cat; 14 | //noinspection ConstantConditions 15 | boolean isMoveable = o instanceof Moveable; 16 | //noinspection ConstantConditions 17 | boolean isTom = o instanceof TomCat; 18 | 19 | //noinspection ConstantConditions 20 | if (isCat && isMoveable && isTom) { 21 | System.out.println("Bingo!"); 22 | } 23 | 24 | } 25 | 26 | private interface Moveable { 27 | 28 | } 29 | 30 | static class Cat { 31 | 32 | } 33 | 34 | private static class TomCat extends Cat implements Moveable { 35 | 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/com/javarush/test/level14/lesson06/home01/BelarusianHen.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level14.lesson06.home01; 2 | 3 | 4 | class BelarusianHen extends Hen { 5 | 6 | @Override 7 | String getDescription() { 8 | return super.getDescription() + String.format(" Моя страна - %s. Я несу %d яиц в месяц.", 9 | Country.BELARUS, getCountOfEggsPerMonth()); 10 | } 11 | 12 | @Override 13 | int getCountOfEggsPerMonth() { 14 | return 200; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/com/javarush/test/level14/lesson06/home01/Country.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level14.lesson06.home01; 2 | 3 | interface Country { 4 | 5 | String UKRAINE = "Ukraine"; 6 | String RUSSIA = "Russia"; 7 | String MOLDOVA = "Moldova"; 8 | String BELARUS = "Belarus"; 9 | } 10 | -------------------------------------------------------------------------------- /src/com/javarush/test/level14/lesson06/home01/Hen.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level14.lesson06.home01; 2 | 3 | 4 | abstract class Hen { 5 | 6 | abstract int getCountOfEggsPerMonth(); 7 | 8 | String getDescription() { 9 | return "Я курица."; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/com/javarush/test/level14/lesson06/home01/MoldovanHen.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level14.lesson06.home01; 2 | 3 | 4 | class MoldovanHen extends Hen { 5 | 6 | @Override 7 | String getDescription() { 8 | return super.getDescription() + String.format(" Моя страна - %s. Я несу %d яиц в месяц.", 9 | Country.MOLDOVA, getCountOfEggsPerMonth()); 10 | } 11 | 12 | @Override 13 | int getCountOfEggsPerMonth() { 14 | return 18; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/com/javarush/test/level14/lesson06/home01/RussianHen.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level14.lesson06.home01; 2 | 3 | class RussianHen extends Hen { 4 | 5 | @Override 6 | String getDescription() { 7 | return super.getDescription() + String.format(" Моя страна - %s. Я несу %d яиц в месяц.", 8 | Country.RUSSIA, getCountOfEggsPerMonth()); 9 | } 10 | 11 | @Override 12 | int getCountOfEggsPerMonth() { 13 | return 55; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/com/javarush/test/level14/lesson06/home01/UkrainianHen.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level14.lesson06.home01; 2 | 3 | class UkrainianHen extends Hen { 4 | 5 | @Override 6 | String getDescription() { 7 | return super.getDescription() + String.format(" Моя страна - %s. Я несу %d яиц в месяц.", 8 | Country.UKRAINE, getCountOfEggsPerMonth()); 9 | } 10 | 11 | @Override 12 | int getCountOfEggsPerMonth() { 13 | return 250; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/com/javarush/test/level14/lesson08/bonus02/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level14.lesson08.bonus02; 2 | 3 | /* НОД 4 | Наибольший общий делитель (НОД). 5 | Ввести с клавиатуры 2 целых положительных числа. 6 | Вывести в консоль наибольший общий делитель. 7 | */ 8 | 9 | import java.util.Scanner; 10 | 11 | class Solution { 12 | 13 | public static void main(String[] args) { 14 | Scanner scan = new Scanner(System.in); 15 | int a = scan.nextInt(); 16 | int b = scan.nextInt(); 17 | int nod = 1; 18 | for (int i = 2; i <= a; i++) { 19 | if ((a % i == 0) && (b % i == 0)) { 20 | nod = i; 21 | } 22 | } 23 | System.out.println(nod); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/com/javarush/test/level14/lesson08/bonus03/Singleton.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level14.lesson08.bonus03; 2 | 3 | /** 4 | * Created by Алексей on 12.04.2014. 5 | */ 6 | public class Singleton { 7 | 8 | private static Singleton instance; 9 | 10 | private Singleton() { 11 | } 12 | 13 | public static Singleton getInstance() { 14 | if (instance == null) { 15 | instance = new Singleton(); 16 | } 17 | 18 | return instance; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/com/javarush/test/level14/lesson08/bonus03/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level14.lesson08.bonus03; 2 | 3 | /* Singleton 4 | Класс является синглтоном (реализует паттерн(шаблон) Singleton), если позволяет создать всего один объект своего типа. 5 | 6 | Реализовать Singleton pattern: 7 | 1. Создай класс Singleton в отдельном файле. 8 | 2. Добавь в него статический метод getInstance(). 9 | 3. Метод getInstance должен возвращать один и тот же объект класса Singleton при любом вызове метода getInstance. 10 | 4. Подумай, каким образом можно запретить создание других объектов этого класса. 11 | 5. Сделай все конструкторы в классе Singleton приватными (private). 12 | 13 | 6. В итоге должна быть возможность создать объект (экземпляр класса) ТОЛЬКО используя метод getInstance. 14 | */ 15 | class Solution { 16 | 17 | } 18 | -------------------------------------------------------------------------------- /src/com/javarush/test/level14/lesson08/home01/Bridge.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level14.lesson08.home01; 2 | 3 | /** 4 | * Created by Алексей on 12.04.2014. 5 | */ 6 | interface Bridge { 7 | 8 | int getCarsCount(); 9 | } 10 | -------------------------------------------------------------------------------- /src/com/javarush/test/level14/lesson08/home01/SuspensionBridge.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level14.lesson08.home01; 2 | 3 | /** 4 | * Created by Алексей on 12.04.2014. 5 | */ 6 | public class SuspensionBridge implements Bridge { 7 | 8 | public int getCarsCount() { 9 | return 22; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/com/javarush/test/level14/lesson08/home01/WaterBridge.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level14.lesson08.home01; 2 | 3 | /** 4 | * Created by Алексей on 12.04.2014. 5 | */ 6 | public class WaterBridge implements Bridge { 7 | 8 | public int getCarsCount() { 9 | return 10; 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /src/com/javarush/test/level14/lesson08/home02/BubblyWine.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level14.lesson08.home02; 2 | 3 | /** 4 | * Created by Алексей on 12.04.2014. 5 | */ 6 | public class BubblyWine extends Wine { 7 | 8 | public String getHolidayName() { 9 | return "Новый год"; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/com/javarush/test/level14/lesson08/home02/Drink.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level14.lesson08.home02; 2 | 3 | /** 4 | * Created by Алексей on 12.04.2014. 5 | */ 6 | abstract class Drink { 7 | 8 | public void taste() { 9 | System.out.println("Вкусно"); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/com/javarush/test/level14/lesson08/home02/Wine.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level14.lesson08.home02; 2 | 3 | /** 4 | * Created by Алексей on 12.04.2014. 5 | */ 6 | class Wine extends Drink { 7 | 8 | public String getHolidayName() { 9 | return "День рождения"; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/com/javarush/test/level14/lesson08/home03/Person.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level14.lesson08.home03; 2 | 3 | interface Person { 4 | 5 | class User implements Person { 6 | 7 | void live() { 8 | System.out.println("Usually I just live"); 9 | } 10 | } 11 | 12 | class Looser implements Person { 13 | 14 | void doNothing() { 15 | System.out.println("Usually I do nothing"); 16 | } 17 | } 18 | 19 | class Coder implements Person { 20 | 21 | void coding() { 22 | System.out.println("Usually I create code"); 23 | } 24 | } 25 | 26 | class Proger implements Person { 27 | 28 | void enjoy() { 29 | System.out.println("Wonderful life!"); 30 | } 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /src/com/javarush/test/level14/lesson08/home05/CompItem.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level14.lesson08.home05; 2 | 3 | /** 4 | * Created by Алексей on 12.04.2014. 5 | */ 6 | interface CompItem { 7 | 8 | String getName(); 9 | } 10 | -------------------------------------------------------------------------------- /src/com/javarush/test/level14/lesson08/home05/Computer.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level14.lesson08.home05; 2 | 3 | /** 4 | * Created by Алексей on 12.04.2014. 5 | */ 6 | class Computer { 7 | 8 | private final Keyboard keyboard; 9 | private final Monitor monitor; 10 | private final Mouse mouse; 11 | 12 | Computer() { 13 | this.keyboard = new Keyboard(); 14 | this.monitor = new Monitor(); 15 | this.mouse = new Mouse(); 16 | } 17 | 18 | public Keyboard getKeyboard() { 19 | return keyboard; 20 | } 21 | 22 | public Monitor getMonitor() { 23 | return monitor; 24 | } 25 | 26 | public Mouse getMouse() { 27 | return mouse; 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /src/com/javarush/test/level14/lesson08/home05/Keyboard.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level14.lesson08.home05; 2 | 3 | /** 4 | * Created by Алексей on 12.04.2014. 5 | */ 6 | public class Keyboard implements CompItem { 7 | 8 | public String getName() { 9 | return this.getClass().getSimpleName(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/com/javarush/test/level14/lesson08/home05/Monitor.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level14.lesson08.home05; 2 | 3 | /** 4 | * Created by Алексей on 12.04.2014. 5 | */ 6 | public class Monitor implements CompItem { 7 | 8 | public String getName() { 9 | return this.getClass().getSimpleName(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/com/javarush/test/level14/lesson08/home05/Mouse.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level14.lesson08.home05; 2 | 3 | /** 4 | * Created by Алексей on 12.04.2014. 5 | */ 6 | public class Mouse implements CompItem { 7 | 8 | public String getName() { 9 | return this.getClass().getSimpleName(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/com/javarush/test/level14/lesson08/home09/Hrivna.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level14.lesson08.home09; 2 | 3 | /** 4 | * Created by Алексей on 12.04.2014. 5 | */ 6 | public class Hrivna extends Money { 7 | 8 | Hrivna(double amount) { 9 | super(amount); 10 | } 11 | 12 | public String getCurrencyName() { 13 | return "HRN"; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/com/javarush/test/level14/lesson08/home09/Money.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level14.lesson08.home09; 2 | 3 | abstract class Money { 4 | 5 | private final double amount; 6 | 7 | Money(double amount) { 8 | this.amount = amount; 9 | } 10 | 11 | public double getAmount() { 12 | return amount; 13 | } 14 | 15 | public abstract String getCurrencyName(); 16 | } 17 | 18 | -------------------------------------------------------------------------------- /src/com/javarush/test/level14/lesson08/home09/USD.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level14.lesson08.home09; 2 | 3 | /** 4 | * Created by Алексей on 12.04.2014. 5 | */ 6 | public class USD extends Money { 7 | 8 | public USD(double amount) { 9 | super(amount); 10 | } 11 | 12 | public String getCurrencyName() { 13 | return "USD"; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/com/javarush/test/level15/lesson02/task01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level15.lesson02.task01; 2 | 3 | /* ООП - Расставить интерфейсы 4 | 1. Добавить все возможные интерфейсы из Movable, Sellable, Discountable в класс Clothes. 5 | 2. Реализовать их методы. 6 | */ 7 | 8 | public class Solution { 9 | 10 | public interface Movable { 11 | 12 | boolean getAllowedAction(String name); 13 | } 14 | 15 | interface Sellable { 16 | 17 | Object getAllowedAction(String name); 18 | } 19 | 20 | interface Discountable { 21 | 22 | Object getAllowedAction(); 23 | } 24 | 25 | public static class Clothes implements Sellable, Discountable { 26 | 27 | public Object getAllowedAction(String name) { 28 | return this; 29 | } 30 | 31 | public Object getAllowedAction() { 32 | return this; 33 | } 34 | 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/com/javarush/test/level15/lesson04/task01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level15.lesson04.task01; 2 | 3 | /* Что-то лишнее 4 | 1. Программа должна выводить следующее: 5 | Это double 6 | Это Object 7 | Это double 8 | Это Integer 9 | Это double 10 | 11 | 2 Удалите реализации всех лишних методов 12 | */ 13 | 14 | class Solution { 15 | 16 | public static void main(String[] args) { 17 | print((short) 1); 18 | print((Number) 1); 19 | print(1); 20 | print((Integer) 1); 21 | print(1); 22 | } 23 | 24 | private static void print(Integer i) { 25 | System.out.println("Это Integer"); 26 | } 27 | 28 | private static void print(Object i) { 29 | System.out.println("Это Object"); 30 | } 31 | 32 | private static void print(double i) { 33 | System.out.println("Это double"); 34 | } 35 | 36 | 37 | } 38 | -------------------------------------------------------------------------------- /src/com/javarush/test/level15/lesson04/task03/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level15.lesson04.task03; 2 | 3 | /* ООП - Перегрузка - убираем лишнее 4 | 1. Подумайте, какая из реализаций метода print будет вызвана. 5 | 2. Удалите все лишние реализации метода print. 6 | */ 7 | 8 | class Solution { 9 | 10 | public static void main(String[] args) { 11 | print(1); 12 | } 13 | 14 | private static void print(long l) { 15 | System.out.println("Я буду Java прогером!"); 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /src/com/javarush/test/level15/lesson04/task04/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level15.lesson04.task04; 2 | 3 | /* Мужчина или женщина? 4 | 1. В методе main создать 2 человека man и woman. man с типом Man, woman с типом Woman. 5 | 2. Изменить метод printName так, чтобы он выполнялся для man и woman. 6 | 3. Реализация метода printName должна быть одна. 7 | */ 8 | 9 | class Solution { 10 | 11 | public static void main(String[] args) { 12 | Human man = new Man(); 13 | Human woman = new Woman(); 14 | 15 | printName(man); 16 | printName(woman); 17 | } 18 | 19 | @SuppressWarnings("EmptyMethod") 20 | private static void printName(Human human) { 21 | 22 | } 23 | 24 | static class Human { 25 | 26 | } 27 | 28 | private static class Man extends Human { 29 | 30 | } 31 | 32 | private static class Woman extends Human { 33 | 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/com/javarush/test/level15/lesson04/task05/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level15.lesson04.task05; 2 | 3 | /* Все лишнее - прочь! 4 | Убрать в методе main лишние строки, для которых метод add нереализован. 5 | */ 6 | 7 | class Solution { 8 | 9 | public static void main(String[] args) { 10 | add((short) 1, 2f); 11 | add(1, 2); 12 | add(2d, 2); 13 | add((byte) 1, 2d); 14 | } 15 | 16 | private static void add(int i, int j) { 17 | System.out.println("Integer addition"); 18 | } 19 | 20 | private static void add(int i, double j) { 21 | System.out.println("Integer and double addition"); 22 | } 23 | 24 | private static void add(double i, double j) { 25 | System.out.println("Double addition"); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/com/javarush/test/level15/lesson06/task03/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level15.lesson06.task03; 2 | 3 | /* Максимально простой код 3 4 | Упрости код: 5 | - убери всё то, что будет генерироваться автоматически при компиляции 6 | - убери все наследования классов, которые и так будут добавлены автоматически при компиляции 7 | - убери все конструкторы, которые создаются и добавляются автоматически. 8 | */ 9 | 10 | class Solution { 11 | 12 | private interface Runnable { 13 | 14 | } 15 | 16 | class Machine implements Runnable { 17 | 18 | } 19 | 20 | private class Car extends Machine { 21 | 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/com/javarush/test/level15/lesson09/task01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level15.lesson09.task01; 2 | 3 | import java.util.HashMap; 4 | import java.util.Map; 5 | 6 | /* Статики 1 7 | В статическом блоке инициализировать labels 5 различными парами. 8 | */ 9 | 10 | class Solution { 11 | 12 | private static final Map labels = new HashMap<>(); 13 | 14 | static { 15 | labels.put(1d, "1"); 16 | labels.put(2d, "2"); 17 | labels.put(3d, "3"); 18 | labels.put(4d, "4"); 19 | labels.put(5d, "5"); 20 | } 21 | 22 | public static void main(String[] args) { 23 | System.out.println(labels); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/com/javarush/test/level15/lesson09/task05/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level15.lesson09.task05; 2 | 3 | /* Статики 4 4 | Внутри статического блока: 5 | 1. создайте класс Cat 6 | 2. Внутри Cat создайте поле класса String name = "Пушок" 7 | 3. создайте объект класса Cat 8 | 4. присвойте статическому объекту Object cat созданный вами 9 | 5. Выведите в консоль myCat.name 10 | */ 11 | 12 | class Solution { 13 | 14 | private static final Object cat; 15 | 16 | static { 17 | class Cat { 18 | 19 | private final String name = "Пушок"; 20 | } 21 | cat = new Cat(); 22 | Cat myCat = (Cat) cat; 23 | System.out.println(myCat.name); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /src/com/javarush/test/level15/lesson12/bonus01/Flyable.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level15.lesson12.bonus01; 2 | 3 | interface Flyable { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /src/com/javarush/test/level15/lesson12/bonus01/Helicopter.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level15.lesson12.bonus01; 2 | 3 | /** 4 | * Created by ailenko on 14.04.2014. 5 | */ 6 | class Helicopter implements Flyable { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /src/com/javarush/test/level15/lesson12/bonus01/Plane.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level15.lesson12.bonus01; 2 | 3 | /** 4 | * Created by ailenko on 14.04.2014. 5 | */ 6 | class Plane implements Flyable { 7 | 8 | @SuppressWarnings("FieldCanBeLocal") 9 | private final int passengers; 10 | 11 | Plane(int passengers) { 12 | this.passengers = passengers; 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/com/javarush/test/level15/lesson12/home03/Tree.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level15.lesson12.home03; 2 | 3 | class Tree { 4 | 5 | private static int globalNumber; 6 | private final int number; 7 | 8 | Tree() { 9 | this.number = ++globalNumber; 10 | } 11 | 12 | public void info(Object s) { 13 | System.out.println(String 14 | .format("Дерево № %d , метод Object, параметр %s", number, s.getClass().getSimpleName())); 15 | } 16 | 17 | public void info(Number s) { 18 | System.out.println(String 19 | .format("Дерево № %d , метод Number, параметр %s", number, s.getClass().getSimpleName())); 20 | } 21 | 22 | public void info(String s) { 23 | System.out.println(String 24 | .format("Дерево № %d , метод String, параметр %s", number, s.getClass().getSimpleName())); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/com/javarush/test/level15/lesson12/home04/Earth.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level15.lesson12.home04; 2 | 3 | /** 4 | * Created by ailenko on 14.04.2014. 5 | */ 6 | public class Earth implements Planet 7 | 8 | { 9 | 10 | private static Earth instance; 11 | 12 | private Earth() { 13 | } 14 | 15 | public static Earth getInstance() { 16 | if (instance == null) { 17 | instance = new Earth(); 18 | } 19 | return instance; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/com/javarush/test/level15/lesson12/home04/Moon.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level15.lesson12.home04; 2 | 3 | /** 4 | * Created by ailenko on 14.04.2014. 5 | */ 6 | public class Moon implements Planet { 7 | 8 | private static Moon instance; 9 | 10 | private Moon() { 11 | } 12 | 13 | public static Moon getInstance() { 14 | if (instance == null) { 15 | instance = new Moon(); 16 | } 17 | return instance; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/com/javarush/test/level15/lesson12/home04/Planet.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level15.lesson12.home04; 2 | 3 | interface Planet { 4 | 5 | String SUN = "sun"; 6 | String MOON = "moon"; 7 | String EARTH = "earth"; 8 | } 9 | -------------------------------------------------------------------------------- /src/com/javarush/test/level15/lesson12/home04/Sun.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level15.lesson12.home04; 2 | 3 | /** 4 | * Created by ailenko on 14.04.2014. 5 | */ 6 | public class Sun implements Planet { 7 | 8 | private static Sun instance; 9 | 10 | private Sun() { 11 | } 12 | 13 | public static Sun getInstance() { 14 | if (instance == null) { 15 | instance = new Sun(); 16 | } 17 | return instance; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/com/javarush/test/level15/lesson12/home07/Constants.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level15.lesson12.home07; 2 | 3 | class Constants { 4 | 5 | public static final String FILE_NAME = "D:\\1.txt"; 6 | } 7 | -------------------------------------------------------------------------------- /src/com/javarush/test/level15/lesson12/home10/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level15.lesson12.home10; 2 | 3 | /* ООП - наследование 4 | Исправить класс Hrivna так, чтоб избежать ошибку StackOverflowError, класс Money менять нельзя. 5 | */ 6 | 7 | public class Solution { 8 | 9 | public static void main(String[] args) { 10 | System.out.println(new Hrivna().getAmount()); 11 | } 12 | 13 | static abstract class Money { 14 | 15 | abstract Money getMoney(); 16 | 17 | Object getAmount() { 18 | return getMoney().getAmount(); 19 | } 20 | } 21 | 22 | //add your code below - добавь код ниже 23 | public static class Hrivna extends Money { 24 | 25 | final double amount = 123d; 26 | 27 | public Hrivna getMoney() { 28 | return this; 29 | } 30 | 31 | Object getAmount() { 32 | return amount; 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/com/javarush/test/level16/lesson03/task01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level16.lesson03.task01; 2 | 3 | /* My first thread 4 | Создать public static class TestThread - нить с помощью интерфейса Runnable. 5 | TestThread должен выводить в консоль "My first thread". 6 | */ 7 | class Solution { 8 | 9 | public static void main(String[] args) { 10 | TestThread task = new TestThread(); 11 | new Thread(task).start(); 12 | } 13 | 14 | static class TestThread implements Runnable { 15 | 16 | public void run() { 17 | System.out.println("My first thread"); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/com/javarush/test/level16/lesson03/task02/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level16.lesson03.task02; 2 | 3 | /* My second thread 4 | 1. Создать public static класс TestThread унаследовавшись от класса Thread. 5 | 2. Создать статик блок внутри TestThread, который выводит в консоль "it's static block inside TestThread". 6 | 3. Метод run должен выводить в консоль "it's run method". 7 | */ 8 | 9 | class Solution { 10 | 11 | public static void main(String[] args) { 12 | TestThread thread = new TestThread(); 13 | thread.start(); 14 | } 15 | 16 | static class TestThread extends Thread { 17 | 18 | static { 19 | System.out.println("it's static block inside TestThread"); 20 | } 21 | 22 | public void run() { 23 | System.out.println("it's run method"); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/com/javarush/test/level16/lesson10/task03/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level16.lesson10.task03; 2 | 3 | /* Снова interrupt 4 | Создай нить TestThread. 5 | В методе main создай экземпляр нити, запусти, а потом прерви ее используя метод interrupt(). 6 | */ 7 | 8 | import java.util.concurrent.TimeUnit; 9 | 10 | class Solution { 11 | 12 | public static void main(String[] args) throws InterruptedException { 13 | TestThread thread = new TestThread(); 14 | thread.start(); 15 | TimeUnit.SECONDS.sleep(3); 16 | thread.interrupt(); 17 | } 18 | 19 | static class TestThread extends Thread { 20 | 21 | @SuppressWarnings("StatementWithEmptyBody") 22 | public void run() { 23 | while (!isInterrupted()) { 24 | } 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/com/javarush/test/level16/lesson13/bonus01/common/BmpReader.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level16.lesson13.bonus01.common; 2 | 3 | /** 4 | * Created by Алексей on 19.04.2014. 5 | */ 6 | public class BmpReader implements ImageReader { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /src/com/javarush/test/level16/lesson13/bonus01/common/ImageReader.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level16.lesson13.bonus01.common; 2 | 3 | public interface ImageReader { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /src/com/javarush/test/level16/lesson13/bonus01/common/ImageTypes.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level16.lesson13.bonus01.common; 2 | 3 | public enum ImageTypes { 4 | BMP, 5 | JPG, 6 | PNG 7 | } 8 | -------------------------------------------------------------------------------- /src/com/javarush/test/level16/lesson13/bonus01/common/JpgReader.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level16.lesson13.bonus01.common; 2 | 3 | /** 4 | * Created by Алексей on 19.04.2014. 5 | */ 6 | public class JpgReader implements ImageReader { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /src/com/javarush/test/level16/lesson13/bonus01/common/PngReader.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level16.lesson13.bonus01.common; 2 | 3 | /** 4 | * Created by Алексей on 19.04.2014. 5 | */ 6 | public class PngReader implements ImageReader { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /src/com/javarush/test/level16/lesson13/bonus02/Message.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level16.lesson13.bonus02; 2 | 3 | interface Message { 4 | 5 | void showWarning(); 6 | } 7 | -------------------------------------------------------------------------------- /src/com/javarush/test/level17/lesson04/task04/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level17.lesson04.task04; 2 | 3 | /* Синхронизированный президент 4 | И снова Singleton паттерн - синхронизация в статическом блоке 5 | Внутри класса OurPresident в статическом блоке создайте синхронизированный блок. 6 | Внутри синхронизированного блока инициализируйте president. 7 | */ 8 | 9 | class Solution { 10 | 11 | static class OurPresident { 12 | 13 | private static final OurPresident president; 14 | 15 | static { 16 | synchronized (OurPresident.class) { 17 | president = getOurPresident(); 18 | } 19 | } 20 | 21 | private OurPresident() { 22 | } 23 | 24 | static OurPresident getOurPresident() { 25 | return president; 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/com/javarush/test/level17/lesson04/task05/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level17.lesson04.task05; 2 | 3 | /* МВФ 4 | Singleton паттерн - синхронизация в методе 5 | IMF - это Международный Валютный Фонд 6 | Внутри метода getFund создайте синхронизированный блок 7 | Внутри синхронизированного блока инициализируйте переменную imf так, чтобы метод getFund всегда возвращал один и тот же объект 8 | */ 9 | 10 | public class Solution { 11 | 12 | public static class IMF { 13 | 14 | private static IMF imf; 15 | 16 | private IMF() { 17 | } 18 | 19 | public static IMF getFund() { 20 | synchronized (IMF.class) { 21 | if (imf == null) { 22 | imf = new IMF(); 23 | } 24 | } 25 | return imf; 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/com/javarush/test/level17/lesson10/bonus01/Sex.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level17.lesson10.bonus01; 2 | 3 | public enum Sex { 4 | MALE, 5 | FEMALE 6 | } 7 | -------------------------------------------------------------------------------- /src/com/javarush/test/level17/lesson10/bonus02/Sex.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level17.lesson10.bonus02; 2 | 3 | public enum Sex { 4 | MALE, 5 | FEMALE 6 | } 7 | -------------------------------------------------------------------------------- /src/com/javarush/test/level17/lesson10/bonus03/Dishes.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level17.lesson10.bonus03; 2 | 3 | class Dishes { 4 | 5 | private final byte tableNumber; 6 | 7 | Dishes(byte tableNumber) { 8 | this.tableNumber = tableNumber; 9 | } 10 | 11 | public byte getTableNumber() { 12 | return tableNumber; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/com/javarush/test/level17/lesson10/bonus03/Order.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level17.lesson10.bonus03; 2 | 3 | public class Order { 4 | 5 | private final long time; 6 | private final byte tableNumber; 7 | 8 | Order(byte tableNumber) { 9 | time = (long) (Math.random() * 200); 10 | this.tableNumber = tableNumber; 11 | } 12 | 13 | public long getTime() { 14 | return time; 15 | } 16 | 17 | public byte getTableNumber() { 18 | return tableNumber; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/com/javarush/test/level17/lesson10/bonus03/Restaurant.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level17.lesson10.bonus03; 2 | 3 | /* Ресторан 4 | 1.Разберись, что делает программа. Официант почему-то не относит приготовленные блюда назад к столам :( 5 | 2.Исправь ошибку. 6 | Подсказка: это одна строчка 7 | */ 8 | 9 | class Restaurant { 10 | 11 | public static void main(String[] args) throws Exception { 12 | Waiter waiterTarget = new Waiter(); 13 | Thread waiter = new Thread(waiterTarget); 14 | 15 | Cook cookTarget = new Cook(); 16 | Thread cook = new Thread(cookTarget); 17 | 18 | waiter.start(); 19 | cook.start(); 20 | 21 | Thread.sleep(2000); 22 | waiterTarget.continueWorking = false; 23 | cookTarget.continueWorking = false; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/com/javarush/test/level17/lesson10/bonus03/Table.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level17.lesson10.bonus03; 2 | 3 | public class Table { 4 | 5 | private static byte tableNumber; 6 | private final byte number = ++tableNumber; 7 | 8 | public Order getOrder() { 9 | return new Order(number); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/com/javarush/test/level17/lesson10/home03/Drug.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level17.lesson10.home03; 2 | 3 | class Drug { 4 | 5 | private String name; 6 | private String description; 7 | 8 | public String getName() { 9 | return name; 10 | } 11 | 12 | public void setName(String name) { 13 | this.name = name; 14 | } 15 | 16 | public String getDescription() { 17 | return description; 18 | } 19 | 20 | public void setDescription(String description) { 21 | this.description = description; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/com/javarush/test/level17/lesson10/home07/ApplicationContext.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level17.lesson10.home07; 2 | 3 | import java.util.HashMap; 4 | import java.util.Map; 5 | 6 | /* ApplicationContext 7 | ApplicationContext будет доступен множеству нитей. 8 | Сделать так, чтобы данные не терялись: подумай, какое ключевое слово необходимо поставить и где. 9 | */ 10 | 11 | public abstract class ApplicationContext { 12 | 13 | private final Map container = new HashMap<>(); 14 | 15 | protected ApplicationContext() { 16 | parseAllClassesAndInterfaces(); 17 | } 18 | 19 | public synchronized GenericsBean getByName(String name) { 20 | return container.get(name); 21 | } 22 | 23 | public synchronized GenericsBean removeByName(String name) { 24 | return container.remove(name); 25 | } 26 | 27 | abstract void parseAllClassesAndInterfaces(); 28 | } 29 | -------------------------------------------------------------------------------- /src/com/javarush/test/level17/lesson10/home07/Bean.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level17.lesson10.home07; 2 | 3 | interface Bean { //это интерфейс-маркер 4 | 5 | } 6 | -------------------------------------------------------------------------------- /src/com/javarush/test/level17/lesson10/home08/NotEnoughMoneyException.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level17.lesson10.home08; 2 | 3 | class NotEnoughMoneyException extends Exception { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /src/com/javarush/test/level17/lesson10/home09/CorruptedDataException.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level17.lesson10.home09; 2 | 3 | import java.io.IOException; 4 | 5 | class CorruptedDataException extends IOException { 6 | 7 | } 8 | -------------------------------------------------------------------------------- /src/com/javarush/test/level18/lesson03/task01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level18.lesson03.task01; 2 | 3 | /* Максимальный байт 4 | Ввести с консоли имя файла 5 | Найти максимальный байт в файле, вывести его на экран. 6 | Закрыть поток ввода-вывода 7 | */ 8 | 9 | import java.io.BufferedReader; 10 | import java.io.FileInputStream; 11 | import java.io.InputStreamReader; 12 | 13 | class Solution { 14 | 15 | public static void main(String[] args) throws Exception { 16 | BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); 17 | String fileName = reader.readLine(); 18 | reader.close(); 19 | FileInputStream input = new FileInputStream(fileName); 20 | int max = 0; 21 | while (input.available() > 0) { 22 | int data = input.read(); 23 | if (data > max) { 24 | max = data; 25 | } 26 | } 27 | input.close(); 28 | System.out.println(max); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/com/javarush/test/level18/lesson03/task02/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level18.lesson03.task02; 2 | 3 | import java.io.BufferedReader; 4 | import java.io.FileInputStream; 5 | import java.io.InputStreamReader; 6 | 7 | /* Минимальный байт 8 | Ввести с консоли имя файла 9 | Найти минимальный байт в файле, вывести его на экран. 10 | Закрыть поток ввода-вывода 11 | */ 12 | 13 | class Solution { 14 | 15 | public static void main(String[] args) throws Exception { 16 | BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); 17 | String fileName = reader.readLine(); 18 | reader.close(); 19 | FileInputStream input = new FileInputStream(fileName); 20 | int min = input.read(); 21 | while (input.available() > 0) { 22 | int data = input.read(); 23 | if (data < min) { 24 | min = data; 25 | } 26 | } 27 | input.close(); 28 | System.out.println(min); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/com/javarush/test/level18/lesson08/task02/AmigoOutputStream.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level18.lesson08.task02; 2 | 3 | import java.io.IOException; 4 | 5 | interface AmigoOutputStream { 6 | 7 | void flush() throws IOException; 8 | 9 | void write(int b) throws IOException; 10 | 11 | void write(byte[] b) throws IOException; 12 | 13 | void write(byte[] b, int off, int len) throws IOException; 14 | 15 | void close() throws IOException; 16 | } 17 | -------------------------------------------------------------------------------- /src/com/javarush/test/level18/lesson08/task04/TxtInputStream.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level18.lesson08.task04; 2 | 3 | import java.io.FileInputStream; 4 | import java.io.FileNotFoundException; 5 | 6 | /* UnsupportedFileName 7 | Измените класс TxtInputStream так, чтобы он работал только с txt-файлами (*.txt) 8 | Например, first.txt или name.1.part3.txt 9 | Если передан не txt-файл, например, file.txt.exe, то конструктор должен выбрасывать исключение UnsupportedFileNameException 10 | */ 11 | 12 | class TxtInputStream extends FileInputStream { 13 | 14 | public TxtInputStream(String fileName) 15 | throws FileNotFoundException, UnsupportedFileNameException { 16 | super(fileName); 17 | if (!fileName.endsWith(".txt")) { 18 | throw new UnsupportedFileNameException(); 19 | } 20 | } 21 | } 22 | 23 | -------------------------------------------------------------------------------- /src/com/javarush/test/level18/lesson08/task04/UnsupportedFileNameException.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level18.lesson08.task04; 2 | 3 | class UnsupportedFileNameException extends Exception { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /src/com/javarush/test/level19/lesson03/task02/AmigoStringWriter.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level19.lesson03.task02; 2 | 3 | import java.io.IOException; 4 | 5 | interface AmigoStringWriter { 6 | 7 | void flush() throws IOException; 8 | 9 | void writeString(String s) throws IOException; 10 | 11 | void close() throws IOException; 12 | } 13 | -------------------------------------------------------------------------------- /src/com/javarush/test/level19/lesson03/task04/Person.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level19.lesson03.task04; 2 | 3 | import java.util.Date; 4 | 5 | public class Person { 6 | 7 | private final String firstName; 8 | private final String middleName; 9 | private final String lastName; 10 | private final Date birthDate; 11 | 12 | public Person(String firstName, String middleName, String lastName, Date birthDate) { 13 | this.firstName = firstName; 14 | this.middleName = middleName; 15 | this.lastName = lastName; 16 | this.birthDate = birthDate; 17 | } 18 | 19 | @Override 20 | public String toString() { 21 | return String.format("%s %s %s %s", lastName, firstName, middleName, birthDate.toString()); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/com/javarush/test/level19/lesson03/task04/PersonScanner.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level19.lesson03.task04; 2 | 3 | interface PersonScanner { 4 | 5 | Person read(); 6 | 7 | void close(); 8 | } 9 | -------------------------------------------------------------------------------- /src/com/javarush/test/level19/lesson10/home03/Person.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level19.lesson10.home03; 2 | 3 | import java.util.Date; 4 | 5 | class Person { 6 | 7 | private final String name; 8 | private final Date birthday; 9 | 10 | public Person(String name, Date birthday) { 11 | this.name = name; 12 | this.birthday = birthday; 13 | } 14 | 15 | private String getName() { 16 | return name; 17 | } 18 | 19 | private Date getBirthday() { 20 | return birthday; 21 | } 22 | 23 | public String toString() { 24 | return this.getName() + " " + this.getBirthday(); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/com/javarush/test/level20/lesson02/task01/Asset.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level20.lesson02.task01; 2 | 3 | class Asset { 4 | 5 | private final String name; 6 | private double price; 7 | 8 | Asset(String name) { 9 | this.name = name; 10 | } 11 | 12 | public String getName() { 13 | return name; 14 | } 15 | 16 | public double getPrice() { 17 | return price; 18 | } 19 | 20 | public void setPrice(double price) { 21 | this.price = price; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/com/javarush/test/level20/lesson04/task01/Asset.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level20.lesson04.task01; 2 | 3 | import java.io.Serializable; 4 | 5 | class Asset implements Serializable { 6 | 7 | private final String name; 8 | private double price; 9 | 10 | public Asset(String name) { 11 | this.name = name; 12 | } 13 | 14 | public String getName() { 15 | return name; 16 | } 17 | 18 | public double getPrice() { 19 | return price; 20 | } 21 | 22 | public void setPrice(double price) { 23 | this.price = price; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/com/javarush/test/level20/lesson04/task01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level20.lesson04.task01; 2 | 3 | import java.io.Serializable; 4 | import java.util.ArrayList; 5 | import java.util.Arrays; 6 | import java.util.List; 7 | 8 | /* Как сериализовать? 9 | Сделайте так, чтобы сериализация класса Human была возможной 10 | */ 11 | @SuppressWarnings("WeakerAccess") 12 | class Solution { 13 | 14 | static class Human implements Serializable { 15 | 16 | final List assets = new ArrayList<>(); 17 | String name; 18 | 19 | public Human() { 20 | } 21 | 22 | public Human(String name, Asset... assets) { 23 | this.name = name; 24 | if (assets != null) { 25 | this.assets.addAll(Arrays.asList(assets)); 26 | } 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/com/javarush/test/level20/lesson04/task02/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level20.lesson04.task02; 2 | 3 | import java.io.Serializable; 4 | import java.util.ArrayList; 5 | import java.util.List; 6 | 7 | /* Как сериализовать JavaRush? 8 | Сделайте так, чтобы сериализация класса JavaRush была возможной 9 | */ 10 | class Solution { 11 | 12 | private static class JavaRush implements Serializable { 13 | 14 | public List users = new ArrayList<>(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/com/javarush/test/level20/lesson04/task04/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level20.lesson04.task04; 2 | 3 | import java.io.Serializable; 4 | 5 | /* Как сериализовать static? 6 | Сделайте так, чтобы сериализация класса ClassWithStatic была возможной 7 | */ 8 | class Solution { 9 | 10 | private static class ClassWithStatic implements Serializable { 11 | 12 | public static String staticString = "it's test static string"; 13 | public int i; 14 | public int j; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/com/javarush/test/level20/lesson04/task05/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level20.lesson04.task05; 2 | 3 | import java.io.Serializable; 4 | 5 | /* Как сериализовать что-то свое? 6 | Сделайте так, чтобы сериализация класса Object была возможной 7 | */ 8 | public class Solution { 9 | 10 | private static int countStrings; 11 | 12 | private static class Object implements Serializable { 13 | 14 | public String string1; 15 | public String string2; 16 | } 17 | 18 | public static class String implements Serializable { 19 | 20 | private final int number; 21 | 22 | public String() { 23 | number = ++countStrings; 24 | } 25 | 26 | public void print() { 27 | System.out.println("string #" + number); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/com/javarush/test/level20/lesson10/home01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level20.lesson10.home01; 2 | 3 | import java.io.Serializable; 4 | 5 | /* Минимум изменений 6 | Используя минимум изменений кода сделайте так, чтобы сериализация класса C стала возможной. 7 | */ 8 | class Solution { 9 | 10 | class A implements Serializable { 11 | 12 | String name; 13 | 14 | A(String name) { 15 | this.name += name; 16 | } 17 | 18 | @Override 19 | public String toString() { 20 | return name; 21 | } 22 | } 23 | 24 | class B extends A { 25 | 26 | String name; 27 | 28 | B(String name) { 29 | super(name); 30 | this.name += name; 31 | } 32 | } 33 | 34 | class C extends B { 35 | 36 | final String name; 37 | 38 | public C(String name) { 39 | super(name); 40 | this.name = name; 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/com/javarush/test/level20/lesson10/home03/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level20.lesson10.home03; 2 | 3 | import java.io.Serializable; 4 | 5 | /* Найти ошибки 6 | Почему-то при сериализации/десериализации объекта класса B возникают ошибки. 7 | Найдите и исправьте ошибку. 8 | Класс A не должен реализовывать интерфейсы Serializable и Externalizable. 9 | Сигнатура класса В не содержит ошибку :) 10 | */ 11 | class Solution implements Serializable { 12 | 13 | static class A { 14 | 15 | String name = "A"; 16 | 17 | A() { 18 | } 19 | 20 | A(String name) { 21 | this.name += name; 22 | } 23 | } 24 | 25 | private class B extends A implements Serializable { 26 | 27 | public B(String name) { 28 | super(name); 29 | this.name += name; 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/com/javarush/test/level20/lesson10/home06/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level20.lesson10.home06; 2 | 3 | import java.io.IOException; 4 | import java.io.NotSerializableException; 5 | import java.io.ObjectOutputStream; 6 | import java.io.Serializable; 7 | 8 | /* Запрет сериализации 9 | Запретите сериализацию класса SubSolution используя NotSerializableException. 10 | Сигнатуры классов менять нельзя 11 | */ 12 | class Solution implements Serializable { 13 | 14 | private static class SubSolution extends Solution { 15 | 16 | private void writeObject(ObjectOutputStream out) throws IOException { 17 | throw new NotSerializableException(); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/com/javarush/test/level20/lesson10/home09/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level20.lesson10.home09; 2 | 3 | import java.io.Serializable; 4 | import java.util.LinkedList; 5 | import java.util.List; 6 | 7 | /* Знакомство с графами 8 | Дан ориентированный плоский граф Solution, содержащий циклы и петли. 9 | Пример, http://edu.nstu.ru/courses/saod/images/graph1.gif 10 | Сериализовать Solution. 11 | Все данные должны сохранить порядок следования. 12 | */ 13 | class Solution implements Serializable { 14 | 15 | int node; 16 | List edges = new LinkedList<>(); 17 | } 18 | -------------------------------------------------------------------------------- /src/com/javarush/test/level21/lesson02/task03/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level21.lesson02.task03; 2 | 3 | /* Все гениальное - просто! 4 | Упростить. Переменные не переименовывать, комментарии не оставлять. 5 | */ 6 | class Solution { 7 | 8 | public static boolean calculate(boolean a, boolean b, boolean c, boolean d) { 9 | return c; 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /src/com/javarush/test/level21/lesson16/big01/Условие задачи.txt: -------------------------------------------------------------------------------- 1 | Написать простую игру "Ипподром" с двумя классами Hippodrome и Horse. -------------------------------------------------------------------------------- /src/com/javarush/test/level22/lesson05/home01/Task.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level22.lesson05.home01; 2 | 3 | class Task implements Runnable { 4 | 5 | private final String initialString; 6 | private final Solution solution; 7 | 8 | Task(Solution solution, String initialString) { 9 | this.solution = solution; 10 | this.initialString = initialString; 11 | } 12 | 13 | @Override 14 | public void run() { 15 | String name = Thread.currentThread().getName(); 16 | String str = this.initialString; 17 | //noinspection ConstantConditions 18 | do { 19 | System.out.println(name + str); 20 | } while ((str = solution.getPartOfString(str, name)) != null || !str.isEmpty()); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/com/javarush/test/level22/lesson05/home01/TooShortStringFirstThreadException.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level22.lesson05.home01; 2 | 3 | class TooShortStringFirstThreadException extends RuntimeException { 4 | 5 | TooShortStringFirstThreadException(StringIndexOutOfBoundsException e) { 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/com/javarush/test/level22/lesson05/home01/TooShortStringSecondThreadException.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level22.lesson05.home01; 2 | 3 | class TooShortStringSecondThreadException extends RuntimeException { 4 | 5 | TooShortStringSecondThreadException(StringIndexOutOfBoundsException e) { 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/com/javarush/test/level22/lesson07/task01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level22.lesson07.task01; 2 | 3 | /* Форматирование строки 4 | Исправить метод getFormattedString так, чтобы он возвращал строку с параметрами для форматирования. 5 | Для перевода каретки не используйте \n. 6 | Должен быть вывод: 7 | 20 / 7 = 2,86 8 | Exp = 3,33e+00 9 | */ 10 | class Solution { 11 | 12 | public static void main(String[] args) { 13 | System.out.println(String.format(getFormattedString(), 20.0 / 7.0, 10.0 / 3.0)); 14 | } 15 | 16 | @SuppressWarnings("SameReturnValue") 17 | private static String getFormattedString() { 18 | return "20 / 7 = %.2f %nExp = %.2e"; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/com/javarush/test/level22/lesson07/task02/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level22.lesson07.task02; 2 | 3 | /* МНЕ нравится курс JavaRush 4 | Исправить метод getFormattedString так, чтобы он возвращал строку с параметрами для форматирования. 5 | Параметры должны меняться местами. 6 | Должен быть вывод: 7 | МНЕ нравится курс JavaRush 8 | */ 9 | class Solution { 10 | 11 | public static void main(String[] args) { 12 | System.out.println(String.format(getFormattedString(), "JavaRush", "курс", "мне", "нравится")); 13 | } 14 | 15 | @SuppressWarnings("SameReturnValue") 16 | private static String getFormattedString() { 17 | return "%3$S %4$s %2$s %1$s"; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/com/javarush/test/level22/lesson07/task03/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level22.lesson07.task03; 2 | 3 | import java.util.Date; 4 | 5 | /* Форматирование даты 6 | Исправить метод getFormattedString так, чтобы он возвращал строку с параметрами для форматирования. 7 | Должен быть вывод аналогичный следующему: 8 | 31:10:13 15:59:59 9 | */ 10 | class Solution { 11 | 12 | public static void main(String[] args) { 13 | Date date = new Date(); 14 | System.out.println(String.format(getFormattedString(), date, date, date, date, date, date)); 15 | } 16 | 17 | @SuppressWarnings("SameReturnValue") 18 | private static String getFormattedString() { 19 | return "%td:%tm:%ty %tT"; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/com/javarush/test/level23/lesson02/task01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level23.lesson02.task01; 2 | 3 | /* Запретите наследование 4 | Запретите наследование от класса Listener. 5 | */ 6 | class Solution { 7 | 8 | private static final class Listener { 9 | 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/com/javarush/test/level23/lesson02/task02/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level23.lesson02.task02; 2 | 3 | /* Запретите переопределение 4 | Запретите переопределение метода onMouseDown. 5 | */ 6 | class Solution { 7 | 8 | private static class Listener { 9 | 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/com/javarush/test/level23/lesson02/task03/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level23.lesson02.task03; 2 | 3 | /* Запретите создание экземпляров класса 4 | Запретите создание экземпляров класса Listener. 5 | */ 6 | class Solution { 7 | 8 | private static abstract class Listener { 9 | 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/com/javarush/test/level23/lesson04/home01/DbMock.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level23.lesson04.home01; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | import java.util.Map; 6 | 7 | class DbMock { 8 | 9 | private static final List FAKE_TASKS = new ArrayList<>(); 10 | private static final List FAKE_NAMES = new ArrayList<>(); 11 | 12 | public static List getFakeTasks(Map criteria) { 13 | return ViewMock.getFakeTasksCriteria().equals(criteria) ? FAKE_TASKS : null; 14 | } 15 | 16 | public static List getFakeNames(Map criteria) { 17 | return ViewMock.getFakeNamesCriteria().equals(criteria) ? FAKE_NAMES : null; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/com/javarush/test/level23/lesson04/home01/ViewMock.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level23.lesson04.home01; 2 | 3 | import java.util.HashMap; 4 | import java.util.Map; 5 | 6 | class ViewMock { 7 | 8 | private static final Map FAKE_TASKS_CRITERIA = new HashMap(); 9 | private static final Map FAKE_NAMES_CRITERIA = new HashMap(); 10 | 11 | public static Map getFakeTasksCriteria() { 12 | return FAKE_TASKS_CRITERIA; 13 | } 14 | 15 | public static Map getFakeNamesCriteria() { 16 | return FAKE_NAMES_CRITERIA; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/com/javarush/test/level23/lesson06/task01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level23.lesson06.task01; 2 | 3 | /* Как выбрать нужное? 4 | В методе main присвойте объекту Object obj экземпляр класса TEST 5 | Константу TEST и класс TEST менять нельзя. 6 | */ 7 | class Solution { 8 | 9 | public static final String TEST = "test"; 10 | @SuppressWarnings("FieldCanBeLocal") 11 | private static Object obj; 12 | 13 | public static void main(String[] args) { 14 | obj = new TEST(); 15 | System.out.println(obj); 16 | } 17 | 18 | static class TEST { 19 | 20 | @Override 21 | public String toString() { 22 | return "test class"; 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/com/javarush/test/level23/lesson08/home01/vo/Location.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level23.lesson08.home01.vo; 2 | 3 | /** 4 | * Created by Алексей on 09.05.2014. 5 | */ 6 | public class Location extends NamedItem { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /src/com/javarush/test/level23/lesson08/home01/vo/NamedItem.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level23.lesson08.home01.vo; 2 | 3 | public class NamedItem { 4 | 5 | private int id; 6 | private String name; 7 | private String description; 8 | 9 | NamedItem() { 10 | } 11 | 12 | public int getId() { 13 | return id; 14 | } 15 | 16 | public void setId(int id) { 17 | this.id = id; 18 | } 19 | 20 | public String getName() { 21 | return name; 22 | } 23 | 24 | public void setName(String name) { 25 | this.name = name; 26 | } 27 | 28 | public String getDescription() { 29 | return description; 30 | } 31 | 32 | public void setDescription(String description) { 33 | this.description = description; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/com/javarush/test/level23/lesson08/home01/vo/Server.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level23.lesson08.home01.vo; 2 | 3 | /** 4 | * Created by Алексей on 09.05.2014. 5 | */ 6 | public class Server extends NamedItem { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /src/com/javarush/test/level23/lesson08/home01/vo/Subject.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level23.lesson08.home01.vo; 2 | 3 | /** 4 | * Created by Алексей on 09.05.2014. 5 | */ 6 | public class Subject extends NamedItem { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /src/com/javarush/test/level23/lesson08/home01/vo/Subscription.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level23.lesson08.home01.vo; 2 | 3 | /** 4 | * Created by Алексей on 09.05.2014. 5 | */ 6 | public class Subscription extends NamedItem { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /src/com/javarush/test/level23/lesson08/home01/vo/User.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level23.lesson08.home01.vo; 2 | 3 | /** 4 | * Created by Алексей on 09.05.2014. 5 | */ 6 | public class User extends NamedItem { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /src/com/javarush/test/level23/lesson08/task01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level23.lesson08.task01; 2 | 3 | /* Напряги извилины! 4 | Метод printName должен выводить свое собственное имя, т.е. "sout" 5 | Сделайте минимум изменений. 6 | */ 7 | class Solution { 8 | 9 | private final String name; 10 | 11 | private Solution(String name) { 12 | this.name = name; 13 | } 14 | 15 | public static void main(String[] args) { 16 | new Solution("main").sout(); 17 | } 18 | 19 | private String getName() { 20 | return name; 21 | } 22 | 23 | private void sout() { 24 | new Solution("sout") { 25 | void printName() { 26 | System.out.println(getName()); 27 | } 28 | }.printName(); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/com/javarush/test/level23/lesson13/big01/Mouse.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level23.lesson13.big01; 2 | 3 | public class Mouse { 4 | 5 | private final int x; 6 | private final int y; 7 | 8 | public Mouse(int x, int y) { 9 | this.x = x; 10 | this.y = y; 11 | } 12 | 13 | public int getX() { 14 | return x; 15 | } 16 | 17 | public int getY() { 18 | return y; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/com/javarush/test/level23/lesson13/big01/SnakeDirection.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level23.lesson13.big01; 2 | 3 | 4 | public enum SnakeDirection { 5 | UP, 6 | RIGHT, 7 | DOWN, 8 | LEFT 9 | } 10 | -------------------------------------------------------------------------------- /src/com/javarush/test/level23/lesson13/big01/SnakeSection.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level23.lesson13.big01; 2 | 3 | class SnakeSection { 4 | 5 | private final int x; 6 | private final int y; 7 | 8 | 9 | public SnakeSection(int x, int y) { 10 | this.x = x; 11 | this.y = y; 12 | } 13 | 14 | @Override 15 | public boolean equals(Object o) { 16 | if (this == o) { 17 | return true; 18 | } 19 | if (o == null || getClass() != o.getClass()) { 20 | return false; 21 | } 22 | 23 | SnakeSection that = (SnakeSection) o; 24 | 25 | return x == that.x && y == that.y; 26 | } 27 | 28 | @Override 29 | public int hashCode() { 30 | int result = x; 31 | result = 31 * result + y; 32 | return result; 33 | } 34 | 35 | public int getX() { 36 | return x; 37 | } 38 | 39 | public int getY() { 40 | return y; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/com/javarush/test/level24/lesson02/home01/SelfInterfaceMarker.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level24.lesson02.home01; 2 | 3 | /** 4 | * Created by ailenko on 30.04.2014. 5 | */ 6 | interface SelfInterfaceMarker { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /src/com/javarush/test/level24/lesson02/home01/SelfInterfaceMarkerImpl.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level24.lesson02.home01; 2 | 3 | /** 4 | * Created by ailenko on 30.04.2014. 5 | */ 6 | class SelfInterfaceMarkerImpl implements SelfInterfaceMarker { 7 | 8 | SelfInterfaceMarkerImpl() { 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /src/com/javarush/test/level24/lesson02/home01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level24.lesson02.home01; 2 | 3 | /* Создание своего интерфейса-маркера 4 | 1. Создайте интерфейс-маркер SelfInterfaceMarker 5 | 2. Создайте класс SelfInterfaceMarkerImpl, который реализует SelfInterfaceMarker 6 | 3. Добавьте в SelfInterfaceMarkerImpl минимум 2 любых различных public метода (дефолтовый public конструктор должен присутствовать) 7 | 4. Создайте исключение UnsupportedInterfaceMarkerException 8 | 5. В методе testClass класса Util: если параметр == null, то выбросьте UnsupportedInterfaceMarkerException 9 | */ 10 | class Solution { 11 | 12 | public static void main(String[] args) throws UnsupportedInterfaceMarkerException { 13 | SelfInterfaceMarkerImpl obj = new SelfInterfaceMarkerImpl(); 14 | Util.testClass(obj); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /src/com/javarush/test/level24/lesson02/home01/UnsupportedInterfaceMarkerException.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level24.lesson02.home01; 2 | 3 | /** 4 | * Created by ailenko on 30.04.2014. 5 | */ 6 | class UnsupportedInterfaceMarkerException extends Exception { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /src/com/javarush/test/level24/lesson02/home01/Util.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level24.lesson02.home01; 2 | 3 | import java.lang.reflect.Method; 4 | 5 | class Util { 6 | 7 | //пример того, как можно использовать интерфейс-маркер 8 | //this method is available only for a SelfInterfaceMarker implementation 9 | public static void testClass(SelfInterfaceMarker interfaceMarker) 10 | throws UnsupportedInterfaceMarkerException { 11 | if (interfaceMarker == null) { 12 | throw new UnsupportedInterfaceMarkerException(); 13 | } 14 | for (Method method : interfaceMarker.getClass().getDeclaredMethods()) { 15 | System.out.println(method); 16 | } 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/com/javarush/test/level24/lesson02/task02/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level24.lesson02.task02; 2 | 3 | import java.io.Serializable; 4 | import java.rmi.Remote; 5 | import java.util.ArrayDeque; 6 | import java.util.EventListener; 7 | 8 | /* Так-с...сопоставим 9 | Исправьте ошибки: переместите методы clone в те классы, в которых они должны быть реализованы. 10 | Лишние методы удалите. 11 | */ 12 | public class Solution { 13 | 14 | private static class A implements Serializable { 15 | 16 | } 17 | 18 | private static class B implements Remote { 19 | 20 | } 21 | 22 | public static class C extends ArrayDeque { 23 | 24 | public C clone() { 25 | return (C) super.clone(); 26 | } 27 | } 28 | 29 | private static class D implements EventListener { 30 | 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /src/com/javarush/test/level24/lesson04/home01/HasHeight.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level24.lesson04.home01; 2 | 3 | interface HasHeight { 4 | 5 | double getHeight(); 6 | } 7 | -------------------------------------------------------------------------------- /src/com/javarush/test/level24/lesson04/home01/HasWidth.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level24.lesson04.home01; 2 | 3 | interface HasWidth { 4 | 5 | double getWidth(); 6 | } 7 | -------------------------------------------------------------------------------- /src/com/javarush/test/level24/lesson04/home01/Point.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level24.lesson04.home01; 2 | 3 | class Point { 4 | 5 | private final double x; 6 | private final double y; 7 | 8 | Point(double x, double y) { 9 | this.x = x; 10 | this.y = y; 11 | } 12 | 13 | public double getX() { 14 | return x; 15 | } 16 | 17 | public double getY() { 18 | return y; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/com/javarush/test/level24/lesson04/home02/Action.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level24.lesson04.home02; 2 | 3 | public interface Action { 4 | 5 | void someAction(); 6 | } 7 | -------------------------------------------------------------------------------- /src/com/javarush/test/level24/lesson04/home02/FirstClass.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level24.lesson04.home02; 2 | 3 | public abstract class FirstClass implements Action { //first implementation 4 | 5 | FirstClass() { 6 | Solution.countActionObjects++; 7 | } 8 | 9 | public void someAction() { 10 | System.out.println("class FirstClass, method someAction"); 11 | } 12 | 13 | public abstract Action getDependantAction(); 14 | } 15 | -------------------------------------------------------------------------------- /src/com/javarush/test/level24/lesson04/home02/SecondClass.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level24.lesson04.home02; 2 | 3 | public class SecondClass implements Action { //second implementation 4 | 5 | public static final String SPECIFIC_ACTION_FOR_ANONYMOUS_SECOND_CLASS_PARAM = "\nSpecific action for anonymous SecondClass, param = "; 6 | 7 | private static final String SECOND_CLASS_METHOD_STRING = "class SecondClass, method someAction"; 8 | private final StringBuilder sb = new StringBuilder(SECOND_CLASS_METHOD_STRING); 9 | 10 | SecondClass() { 11 | Solution.countActionObjects++; 12 | } 13 | 14 | public void someAction() { 15 | System.out.println(sb.toString()); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/com/javarush/test/level24/lesson06/home01/Mouse.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level24.lesson06.home01; 2 | 3 | /* 4 | обратите внимание, как именно Mouse отличается от Cat 5 | Этот класс - привычный для вас. 6 | */ 7 | public class Mouse implements Pet, Sayable { 8 | 9 | @Override 10 | public Sayable toSayable(int i) { 11 | return this; 12 | } 13 | 14 | @Override 15 | public String say() { 16 | return "Мыша пищит."; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/com/javarush/test/level24/lesson06/home01/Pet.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level24.lesson06.home01; 2 | 3 | interface Pet { 4 | 5 | Sayable toSayable(int i); 6 | } 7 | -------------------------------------------------------------------------------- /src/com/javarush/test/level24/lesson06/home01/Sayable.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level24.lesson06.home01; 2 | 3 | public interface Sayable { 4 | 5 | String say(); 6 | } 7 | -------------------------------------------------------------------------------- /src/com/javarush/test/level24/lesson06/home01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level24.lesson06.home01; 2 | 3 | import java.util.List; 4 | 5 | /* Реализация интерфейса используя локальный класс 6 | В классе Cat реализуйте логику метода toSayable, которая описана в джавадоке. 7 | */ 8 | class Solution { 9 | 10 | public static void main(String[] args) { 11 | List pet = Util.getPets(); 12 | List pets = Util.convertPetToSayable(pet); 13 | Util.printDialog(pets); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/com/javarush/test/level24/lesson06/home02/Mouse.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level24.lesson06.home02; 2 | 3 | /* 4 | обратите внимание, как именно Mouse отличается от Dog 5 | Этот класс - привычный для вас. 6 | */ 7 | public class Mouse implements Pet, Sayable { 8 | 9 | @Override 10 | public Sayable toSayable(int i) { 11 | return this; 12 | } 13 | 14 | @Override 15 | public String say() { 16 | return "Мыша пищит."; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/com/javarush/test/level24/lesson06/home02/Pet.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level24.lesson06.home02; 2 | 3 | interface Pet { 4 | 5 | Sayable toSayable(int i); 6 | } 7 | -------------------------------------------------------------------------------- /src/com/javarush/test/level24/lesson06/home02/Sayable.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level24.lesson06.home02; 2 | 3 | public interface Sayable { 4 | 5 | String say(); 6 | } 7 | -------------------------------------------------------------------------------- /src/com/javarush/test/level24/lesson06/home02/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level24.lesson06.home02; 2 | 3 | import java.util.List; 4 | 5 | /* Как избежать Copy+Paste 6 | В классе Dog реализуйте логику метода toSayable, которая описана в джавадоке. 7 | */ 8 | class Solution { 9 | 10 | public static void main(String[] args) { 11 | List pet = Util.getPets(); 12 | List pets = Util.convertPetToSayable(pet); 13 | Util.printDialog(pets); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/com/javarush/test/level24/lesson06/home02/SuperDog.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level24.lesson06.home02; 2 | 3 | import java.text.SimpleDateFormat; 4 | 5 | abstract class SuperDog { 6 | 7 | final SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy EEE"); 8 | 9 | @SuppressWarnings("SameReturnValue") 10 | String getSuperQuotes() { 11 | //some logic here 12 | return " *** "; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/com/javarush/test/level24/lesson09/home01/Iterator.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level24.lesson09.home01; 2 | 3 | public interface Iterator { 4 | 5 | Iterator next(); 6 | } 7 | -------------------------------------------------------------------------------- /src/com/javarush/test/level24/lesson14/big01/Brick.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level24.lesson14.big01; 2 | 3 | /** 4 | * Класс для объекта "кирпич". 5 | */ 6 | public class Brick extends BaseObject { 7 | 8 | //картинка для отрисовки 9 | private static final int[][] matrix = { 10 | {0, 0, 0, 0, 0}, 11 | {0, 1, 1, 1, 0}, 12 | {0, 1, 1, 1, 0}, 13 | {0, 0, 0, 0, 0}, 14 | {0, 0, 0, 0, 0}, 15 | }; 16 | 17 | public Brick(double x, double y) { 18 | super(x, y, 3); 19 | } 20 | 21 | /** 22 | * Рисуем себя на холсте 23 | */ 24 | @Override 25 | public void draw(Canvas canvas) { 26 | canvas.drawMatrix(x - radius + 1, y, matrix, 'H'); 27 | } 28 | 29 | /** 30 | * Ничего не делаем - кирпич неподвижен 31 | */ 32 | @Override 33 | public void move() { 34 | //do nothing 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/com/javarush/test/level25/lesson02/home01/Columnable.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level25.lesson02.home01; 2 | 3 | interface Columnable { 4 | 5 | /** 6 | * @return полное имя колонки 7 | */ 8 | String getColumnName(); 9 | 10 | /** 11 | * Возвращает true, если колонка видимая, иначе false 12 | */ 13 | boolean isShown(); 14 | 15 | /** 16 | * Скрывает колонку - маркирует колонку -1 в массиве realOrder. 17 | * Сдвигает индексы отображаемых колонок, которые идут после скрытой 18 | */ 19 | void hide(); 20 | 21 | /** 22 | * Возвращает порядок константы в энуме. 23 | * 24 | * @return порядок константы в энуме 25 | */ 26 | int ordinal(); 27 | } 28 | -------------------------------------------------------------------------------- /src/com/javarush/test/level25/lesson02/task01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level25.lesson02.task01; 2 | 3 | /* Новые возможности! 4 | Используя возможности enum-а реализуйте метод getLetterPosition, который должен возвращать позицию буквы (A - 1). 5 | Не должно быть закоментированного кода. 6 | */ 7 | public class Solution { 8 | 9 | public static void main(String[] args) { 10 | System.out.println(Alphabet.G.getLetterPosition()); 11 | } 12 | 13 | public enum Alphabet { 14 | A, B, C, D, E, 15 | F, G, H, I, J, 16 | K, L, M, N, O, 17 | P, Q, R, S, T, 18 | U, V, W, X, Y, Z; 19 | 20 | int getLetterPosition() { 21 | return this.ordinal() + 1; 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/com/javarush/test/level25/lesson05/home01/LoggingStateThread.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level25.lesson05.home01; 2 | 3 | /** 4 | * Created by ailenko on 06.05.2014. 5 | */ 6 | class LoggingStateThread extends Thread { 7 | 8 | private final Thread target; 9 | 10 | LoggingStateThread(Thread target) { 11 | this.target = target; 12 | setDaemon(true); 13 | 14 | } 15 | 16 | @Override 17 | public void run() { 18 | State state = this.target.getState(); 19 | System.out.println(state); 20 | while (state != State.TERMINATED) { 21 | if (state != this.target.getState()) { 22 | state = this.target.getState(); 23 | System.out.println(state); 24 | } 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /src/com/javarush/test/level25/lesson05/home01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level25.lesson05.home01; 2 | 3 | /* Мониторинг состояния нити 4 | В отдельном классе создать нить LoggingStateThread, 5 | которая будет выводить в консоль все изменения состояния (State) переданной в конструктор нити. 6 | Нить LoggingStateThread должна сама завершаться после остановки переданной в конструктор нити. 7 | Метод main не участвует в тестировании. 8 | */ 9 | class Solution { 10 | 11 | public static void main(String[] args) throws InterruptedException { 12 | Thread target = new Thread(); 13 | LoggingStateThread loggingStateThread = new LoggingStateThread(target); 14 | 15 | loggingStateThread.start(); 16 | target.start(); //NEW 17 | Thread.sleep(100); //RUNNABLE 18 | target.join(100); 19 | Thread.sleep(400); 20 | Thread.interrupted(); //TERMINATED 21 | Thread.sleep(500); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/com/javarush/test/level25/lesson07/home01/CustomThreadManipulator.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level25.lesson07.home01; 2 | 3 | interface CustomThreadManipulator { 4 | 5 | void start(String threadName); 6 | 7 | void stop(); 8 | } 9 | -------------------------------------------------------------------------------- /src/com/javarush/test/level25/lesson07/home01/TaskManipulator.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level25.lesson07.home01; 2 | 3 | public class TaskManipulator implements Runnable, CustomThreadManipulator { 4 | 5 | private Thread thread; 6 | private String threadName; 7 | 8 | @Override 9 | public void start(String threadName) { 10 | this.threadName = threadName; 11 | thread = new Thread(this); 12 | thread.start(); 13 | } 14 | 15 | @Override 16 | public void stop() { 17 | thread.interrupt(); 18 | } 19 | 20 | @Override 21 | public void run() { 22 | try { 23 | while (!thread.isInterrupted()) { 24 | Thread.sleep(0); 25 | System.out.println(threadName); 26 | Thread.sleep(90); 27 | } 28 | } catch (InterruptedException ignored) { 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/com/javarush/test/level25/lesson07/home02/CancellableTask.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level25.lesson07.home02; 2 | 3 | import java.util.concurrent.Callable; 4 | import java.util.concurrent.RunnableFuture; 5 | 6 | interface CancellableTask extends Callable { 7 | 8 | void cancel(); 9 | 10 | RunnableFuture newTask(); 11 | } -------------------------------------------------------------------------------- /src/com/javarush/test/level25/lesson09/task01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level25.lesson09.task01; 2 | 3 | /* Поживем - увидим 4 | Все исключения, которые возникают в процессе работы нити Solution, должны быть обработаны одним из вариантов: 5 | 1. Если это Error, то вывести в консоль "Нельзя дальше работать" 6 | 2. Если это Exception, то вывести в консоль "Надо обработать" 7 | 3. Если это Throwable, то вывести в консоль "ХЗ" 8 | Реализуйте эту логику. 9 | */ 10 | class Solution extends Thread { 11 | 12 | public Solution() { 13 | setUncaughtExceptionHandler((t, e) -> { 14 | if (e instanceof Error) { 15 | System.out.println("Нельзя дальше работать"); 16 | } else if (e instanceof Exception) { 17 | System.out.println("Надо обработать"); 18 | } else { 19 | System.out.println("ХЗ"); 20 | } 21 | }); 22 | 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/com/javarush/test/level25/lesson09/task01/Test.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level25.lesson09.task01; 2 | 3 | /** 4 | * Created by Алексей on 08.05.2014. 5 | */ 6 | class Test implements Thread.UncaughtExceptionHandler { 7 | 8 | public static void main(String args[]) { 9 | Test test = new Test(); 10 | Thread myThread = new Thread("thread-02"); 11 | test.uncaughtException(myThread, new Exception("Blah " + myThread.getName() + " blah-blah-blah", 12 | new NullPointerException())); 13 | } 14 | 15 | @Override 16 | public void uncaughtException(Thread t, Throwable e) { 17 | @SuppressWarnings("ReplaceAllDot") String stars = t.getName().replaceAll(".", "*"); 18 | String newMessage = e.getMessage().replace(t.getName(), stars); 19 | e = new Exception(newMessage, e); 20 | System.out.println(e.getMessage()); 21 | t.setName(stars); 22 | } 23 | } -------------------------------------------------------------------------------- /src/com/javarush/test/level25/lesson11/task02/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level25.lesson11.task02; 2 | 3 | /* Первый закон Финэйгла: если эксперимент удался, что-то здесь не так... 4 | Обеспечьте переуступку кванта времени для последовательных выводов текста в консоль 5 | */ 6 | class Solution { 7 | 8 | static class YieldRunnable implements Runnable { 9 | 10 | private final int index; 11 | 12 | public YieldRunnable(int index) { 13 | this.index = index; 14 | } 15 | 16 | public void run() { 17 | System.out.println("begin-" + index); 18 | Thread.yield(); 19 | System.out.println("end-" + index); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/com/javarush/test/level25/lesson16/big01/Bomb.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level25.lesson16.big01; 2 | 3 | /** 4 | * Класс для бомбы. 5 | */ 6 | public class Bomb extends BaseObject { 7 | 8 | public Bomb(double x, double y) { 9 | super(x, y, 1); 10 | } 11 | 12 | /** 13 | * Отрисовываем себя на холсте. 14 | */ 15 | @Override 16 | public void draw(Canvas canvas) { 17 | canvas.setPoint(x, y, 'B'); 18 | } 19 | 20 | /** 21 | * Двигаем себя вниз на один ход. 22 | */ 23 | @Override 24 | public void move() { 25 | y++; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/com/javarush/test/level25/lesson16/big01/Rocket.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level25.lesson16.big01; 2 | 3 | /** 4 | * Класс для объектов-ракета 5 | */ 6 | public class Rocket extends BaseObject { 7 | 8 | public Rocket(double x, double y) { 9 | super(x, y, 1); 10 | } 11 | 12 | /** 13 | * Метод рисует свой объект на "канвасе". 14 | */ 15 | @Override 16 | public void draw(Canvas canvas) { 17 | canvas.setPoint(x, y, 'R'); 18 | } 19 | 20 | /** 21 | * Двигаем себя вверх на один ход. 22 | */ 23 | @Override 24 | public void move() { 25 | y--; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/com/javarush/test/level26/lesson08/task01/Solution.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level26.lesson08.task01; 2 | 3 | import java.util.concurrent.atomic.AtomicInteger; 4 | 5 | 6 | /* Вежливость - это искусственно созданное хорошее настроение. 7 | В классе Solution создайте public static класс IntegerHolder. 8 | IntegerHolder должен быть для типа int, быть нитебезопасным и изменяемым. 9 | В этом классе должны быть два public метода get и set 10 | */ 11 | class Solution { 12 | 13 | static class IntegerHolder { 14 | 15 | private final AtomicInteger hi = new AtomicInteger(); 16 | 17 | public synchronized int get() { 18 | return hi.get(); 19 | } 20 | 21 | public synchronized void set(int i) { 22 | hi.set(i); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/com/javarush/test/level26/lesson10/home01/Consumer.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level26.lesson10.home01; 2 | 3 | import java.util.concurrent.BlockingQueue; 4 | 5 | /** 6 | * Created by ailenko on 08.05.2014. 7 | */ 8 | class Consumer implements Runnable { 9 | 10 | private final BlockingQueue queue; 11 | 12 | Consumer(BlockingQueue queue) { 13 | this.queue = queue; 14 | } 15 | 16 | @SuppressWarnings("InfiniteLoopStatement") 17 | public void run() { 18 | try { 19 | //noinspection InfiniteLoopStatement 20 | while (true) { 21 | System.out.println(queue.take()); 22 | Thread.sleep(500); 23 | } 24 | } catch (InterruptedException e) { 25 | System.out 26 | .println(String.format("[%s] thread was terminated", Thread.currentThread().getName())); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/com/javarush/test/level26/lesson10/home01/Producer.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level26.lesson10.home01; 2 | 3 | import java.util.concurrent.BlockingQueue; 4 | 5 | class Producer implements Runnable { 6 | 7 | private final BlockingQueue queue; 8 | 9 | Producer(BlockingQueue queue) { 10 | this.queue = queue; 11 | } 12 | 13 | public void run() { 14 | try { 15 | int i = 0; 16 | //noinspection InfiniteLoopStatement 17 | while (true) { 18 | queue.put(String.valueOf(i++)); 19 | Thread.sleep(500); 20 | } 21 | } catch (InterruptedException e) { 22 | System.out 23 | .println(String.format("[%s] thread was terminated", Thread.currentThread().getName())); 24 | } 25 | } 26 | } -------------------------------------------------------------------------------- /src/com/javarush/test/level26/lesson10/home02/Consumer.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level26.lesson10.home02; 2 | 3 | import java.util.concurrent.ConcurrentHashMap; 4 | 5 | class Consumer implements Runnable { 6 | 7 | private final ConcurrentHashMap map; 8 | 9 | Consumer(ConcurrentHashMap map) { 10 | this.map = map; 11 | } 12 | 13 | public void run() { 14 | Thread currentThread = Thread.currentThread(); 15 | while (!currentThread.isInterrupted()) { 16 | if (!map.isEmpty()) { 17 | for (String key : map.keySet()) { 18 | System.out.println(map.remove(key)); 19 | } 20 | } 21 | } 22 | } 23 | } -------------------------------------------------------------------------------- /src/com/javarush/test/level26/lesson10/home02/Producer.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level26.lesson10.home02; 2 | 3 | import java.util.concurrent.ConcurrentHashMap; 4 | 5 | /** 6 | * Created by ailenko on 08.05.2014. 7 | */ 8 | class Producer implements Runnable { 9 | 10 | @SuppressWarnings("FieldCanBeLocal") 11 | private final ConcurrentHashMap map; 12 | 13 | Producer(ConcurrentHashMap map) { 14 | this.map = map; 15 | } 16 | 17 | public void run() { 18 | try { 19 | int i = 1; 20 | //noinspection InfiniteLoopStatement 21 | while (true) { 22 | System.out.println("Some text for " + i++); 23 | Thread.sleep(500); 24 | } 25 | } catch (InterruptedException e) { 26 | System.out 27 | .println(String.format("[%s] thread was terminated", Thread.currentThread().getName())); 28 | } 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /src/com/javarush/test/level26/lesson15/big01/Operation.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level26.lesson15.big01; 2 | 3 | /** 4 | * Created by Alex on 28.04.2014. 5 | */ 6 | public enum Operation { 7 | LOGIN, 8 | INFO, 9 | DEPOSIT, 10 | WITHDRAW, 11 | EXIT; 12 | 13 | public static Operation getAllowableOperationByOrdinal(Integer i) { 14 | switch (i) { 15 | case 0: 16 | throw new IllegalArgumentException(); 17 | case 1: 18 | return INFO; 19 | case 2: 20 | return DEPOSIT; 21 | case 3: 22 | return WITHDRAW; 23 | case 4: 24 | return EXIT; 25 | default: 26 | throw new IllegalArgumentException(); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/com/javarush/test/level26/lesson15/big01/command/Command.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level26.lesson15.big01.command; 2 | 3 | import com.javarush.test.level26.lesson15.big01.exception.InterruptOperationException; 4 | 5 | 6 | interface Command { 7 | 8 | void execute() throws InterruptOperationException; 9 | } 10 | -------------------------------------------------------------------------------- /src/com/javarush/test/level26/lesson15/big01/command/ExitCommand.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level26.lesson15.big01.command; 2 | 3 | import com.javarush.test.level26.lesson15.big01.CashMachine; 4 | import com.javarush.test.level26.lesson15.big01.ConsoleHelper; 5 | import com.javarush.test.level26.lesson15.big01.exception.InterruptOperationException; 6 | import java.util.ResourceBundle; 7 | 8 | /** 9 | * Created by Alex on 29.04.2014. 10 | */ 11 | class ExitCommand implements Command { 12 | 13 | private final ResourceBundle res = ResourceBundle 14 | .getBundle(CashMachine.RESOURCE_PATH + "exit_en"); 15 | 16 | @Override 17 | public void execute() throws InterruptOperationException { 18 | ConsoleHelper.writeMessage(res.getString("exit.question.y.n")); 19 | 20 | if (ConsoleHelper.readString().equals(res.getString("yes"))) { 21 | ConsoleHelper.writeMessage(res.getString("thank.message")); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/com/javarush/test/level26/lesson15/big01/exception/InterruptOperationException.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level26.lesson15.big01.exception; 2 | 3 | /** 4 | * Created by Alex on 28.04.2014. 5 | */ 6 | public class InterruptOperationException extends Exception { 7 | 8 | public InterruptOperationException() { 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/com/javarush/test/level26/lesson15/big01/exception/NotEnoughMoneyException.java: -------------------------------------------------------------------------------- 1 | package com.javarush.test.level26.lesson15.big01.exception; 2 | 3 | /** 4 | * Created by Alex on 28.04.2014. 5 | */ 6 | public class NotEnoughMoneyException extends Exception { 7 | 8 | public NotEnoughMoneyException() { 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/com/javarush/test/level26/lesson15/big01/resources/common_en.properties: -------------------------------------------------------------------------------- 1 | the.end=Terminated. Thank you for visiting JavaRush cash machine. Good luck. 2 | choose.operation=Please choose an operation desired or type 'EXIT' for exiting 3 | operation.INFO=INFO 4 | operation.DEPOSIT=DEPOSIT 5 | operation.WITHDRAW=WITHDRAW 6 | operation.EXIT=EXIT 7 | invalid.data=Please specify valid data. 8 | choose.currency.code=Please choose a currency code, for example USD 9 | choose.denomination.and.count.format=Please specify integer denomination and integer count. For example '10 3' means 30 %s -------------------------------------------------------------------------------- /src/com/javarush/test/level26/lesson15/big01/resources/deposit_en.properties: -------------------------------------------------------------------------------- 1 | before=Depositing... 2 | success.format=%d %s was deposited successfully 3 | invalid.data=Please specify valid data. -------------------------------------------------------------------------------- /src/com/javarush/test/level26/lesson15/big01/resources/exit_en.properties: -------------------------------------------------------------------------------- 1 | exit.question.y.n=Do you really want to exit? 2 | yes=y 3 | thank.message=Thank you for visiting JavaRush cash machine. Good luck. -------------------------------------------------------------------------------- /src/com/javarush/test/level26/lesson15/big01/resources/info_en.properties: -------------------------------------------------------------------------------- 1 | before=Information: 2 | no.money=No money available. -------------------------------------------------------------------------------- /src/com/javarush/test/level26/lesson15/big01/resources/login_en.properties: -------------------------------------------------------------------------------- 1 | before=Logging in... 2 | specify.data=Please specify your credit card number and pin code or type 'EXIT' for exiting. 3 | success.format=Credit card [%s] is verified successfully! 4 | not.verified.format=Credit card [%s] is not verified. 5 | try.again.or.exit=Please try again or type 'EXIT' for urgent exiting 6 | try.again.with.details=Please specify valid credit card number - 12 digits, pin code - 4 digits. -------------------------------------------------------------------------------- /src/com/javarush/test/level26/lesson15/big01/resources/verifiedCards.properties: -------------------------------------------------------------------------------- 1 | # suppress inspection "UnusedProperty" for whole file 2 | 123456789012=1234 3 | 234567890123=2345 4 | 345678901234=3456 -------------------------------------------------------------------------------- /src/com/javarush/test/level26/lesson15/big01/resources/withdraw_en.properties: -------------------------------------------------------------------------------- 1 | before=Withdrawing... 2 | success.format=%d %s was withdrawn successfully 3 | specify.amount=Please specify integer amount for withdrawing. 4 | specify.not.empty.amount=Please specify valid positive integer amount for withdrawing. 5 | not.enough.money=Not enough money on your account, please try again 6 | exact.amount.not.available=Exact amount is not available --------------------------------------------------------------------------------