Tous nos rayons

Déjà client ? Identifiez-vous

Mot de passe oublié ?

Nouveau client ?

CRÉER VOTRE COMPTE
Java Challenges: 100+ Proven Tasks that Will Prepare You for Anything
Ajouter à une liste

Librairie Eyrolles - Paris 5e
Indisponible

Java Challenges: 100+ Proven Tasks that Will Prepare You for Anything

Java Challenges: 100+ Proven Tasks that Will Prepare You for Anything

Michael Inden

768 pages, parution le 03/12/2021

Résumé

Expand your knowledge of Java with this entertaining learning guide, which features 100+ exercises and programming challenges. Java Challenges will prepare you for your next exam or job interview, and covers many practical topics, such as strings, arrays, data structures, recursion, and date and time. The APIs and other material included in this book are Java 17 compatible.

Each topic is addressed in its own separate chapter, starting with an introduction to the basics and followed by multiple exercises of varying degrees of difficulty, helping you to improve your programming skills effectively. Detailed sample solutions, including the algorithms used for all tasks, are included to maximize your understanding of each area.

Author Michael Inden also describes alternative solutions and analyzes possible pitfalls and typical errors. Three appendices round out the book: one covering JShell, which is often helpful for trying out the code snippets and examples in the book, followed by an introduction to JUnit 5 for unit testing and verifying solutions, while the final appendix explains O-notation for estimating performance.

After reading this book, you'll be prepared to take the next step in your career or tackle your next personal project. All source code is freely available for download via the Apress website.

What You Will Learn

  • Improve your Java knowledge by solving enjoyable but challenging programming puzzles
  • Solve mathematical problems, recursions, strings, arrays and more
  • Manage data processing and data structures like lists, sets, maps
  • Handle advanced recursion as well as binary trees, sorting and searching
  • Gamify key fundamentals for fun and easier reinforcement
  • Who This Book Is For

    Professional software developers, makers, as well as computer science teachers and students. At least some prior experience with Java programming is recommended.

    1 Introduction ................................................ 11.1 Structure of the chapters ...................................... 11.2 Basic structure of the Eclipse project ............................ 31.3 Basic framework for unit tests .................................. 41.4 Note on programming style .................................... 51.5 Trying out the examples and solutions........................... 9I Fundamentals 112 Mathematical problems ...................................... 132.1 Introduction.................................................. 132.1.1 Roman numerals....................................... 172.1.2 Number Games ........................................ 182.2 Exercises ................................................... 212.2.1 Exercise 1: Basic Arithmetic ( ) ................... 212.2.2 Exercise 2: Number as text ( ) .................... 222.2.3 Exercise 3: Perfect numbers ( ) ................... 222.2.4 Exercise 4: Prime Numbers ( ) ................... 232.2.5 Exercise 5: Prime number pairs ( ) ................ 232.2.6 Exercise 6: Checksum ( ) ........................ 232.2.7 Exercise 7: Roman numbers ( ) .................. 242.2.8 Exercise 8: Combinatorics ( ) .................... 242.2.9 Exercise 9: Armstrong Numbers ( ) ............... 252.2.10 Exercise 10: Max Change Calculator ( ) ........... 252.2.11 Exercise 11: Related Numbers ( )................. 262.2.12 Exercise 12: Prime factorization ( )................ 262.3 Solutions .................................................... 272.3.1 Solution 1: Basic Arithmetic ( ) ................... 272.3.2 Solution 2: Number as text ( ) .................... 302.3.3 Solution 3: Perfect numbers ( ) ................... 322.3.4 Solution 4: Prime Numbers ( ) .................... 342.3.5 Solution 5: Prime number pairs ( ) ................ 36vi Inhaltsverzeichnis2.3.6 Solution 6: Checksum ( ) ........................ 402.3.7 Solution 7: Roman numbers ( ) ................... 412.3.8 Solution 8: Combinatorics ( ) ..................... 462.3.9 Solution 9: Armstrong Numbers ( ) ................ 492.3.10 Solution 10: Max Change Calculator ( ) ............ 522.3.11 Solution 11: Related Numbers ( ) ................. 542.3.12 Solution 12: Prime factorization ( ) ................ 553 Recursion .................................................. 593.1 Introduction.................................................. 593.1.1 Mathematical examples ................................. 593.1.2 Algorithmic examples ................................... 633.1.3 Steps when multiplying the digits of a number.............. 673.1.4 Typical problems ....................................... 683.2 Exercises ................................................... 713.2.1 Exercise 1: Fibonacci ( ) ......................... 713.2.2 Exercise 2: Process digits ( ) ..................... 713.2.3 Exercise 3: GCD ( ) ............................. 723.2.4 Exercise 4: Reverse String ( ) .................... 733.2.5 Exercise 5: Array Sum ( ) ........................ 733.2.6 Exercise 6: Array Min ( ) ......................... 733.2.7 Exercise 7: Conversions ( ) ...................... 743.2.8 Exercise 8: Exponential Function ( )............... 753.2.9 Exercise 9: Pascal's triangle ( ) ................... 763.2.10 Exercise 10: Number palindromes ( ).............. 763.2.11 Exercise 11: Permutations ( ) .................... 773.2.12 Exercise 12: Count Substrings ( ) ................. 773.2.13 Exercise 13: Ruler ( ) ........................... 783.3 Solutions .................................................... 793.3.1 Solution 1: Fibonacci ( ) ......................... 793.3.2 Solution 2: Process digits ( ) ..................... 813.3.3 Solution 3: GCD ( ) ............................. 823.3.4 Solution 4: Reverse String ( ) .................... 853.3.5 Solution 5: Array Sum ( ) ........................ 863.3.6 Solution 6: Array Min ( ) ......................... 873.3.7 Solution 7: Conversions ( )....................... 883.3.8 Solution 8: Exponential Function ( ) ............... 923.3.9 Solution 9: Pascal's triangle ( ) ................... 953.3.10 Solution 10: Number palindromes ( ) .............. 983.3.11 Solution 11: Permutations ( ) ..................... 1013.3.12 Solution 12: Count Substrings ( ) ................. 1043.3.13 Solution 13: Ruler ( ) ............................ 108Inhaltsverzeichnis vii4 Strings ..................................................... 1114.1 Introduction.................................................. 1114.1.1 The class String ..................................... 1124.1.2 The classes StringBuffer and StringBuilder ........ 1134.1.3 Class Character ..................................... 1144.1.4 Examples related to Character and String ............. 1154.2 Exercises ................................................... 1184.2.1 Exercise 1: Number conversions ( ) ............... 1184.2.2 Exercise 2: Joiner ( ) ............................ 1184.2.3 Exercise 3: Reverse String ( ) .................... 1194.2.4 Exercise 4: Palindrome ( ) ....................... 1194.2.5 Exercise 5: No Duplicate Chars ( ) ................ 1204.2.6 Exercise 6: Remove Duplicate Letters ( ) .......... 1204.2.7 Exercise 7: Capitalize ( ) ........................ 1214.2.8 Exercise 8: Rotation ( ) .......................... 1224.2.9 Exercise 9: Well formed braces ( ) ................ 1224.2.10 Exercise 10: Anagram ( ) ........................ 1234.2.11 Exercise 11: Morse Code ( ) ..................... 1234.2.12 Exercise 12: Pattern Checker ( ) .................. 1244.2.13 Exercise 13: Tennis score ( ) ..................... 1244.2.14 Exercise 14: Version numbers ( ) ................. 1254.2.15 Exercise 15: Conversion strToLong ( ) ........... 1254.2.16 Exercise 16: Print Tower ( ) ...................... 1264.3 Solutions .................................................... 1274.3.1 Solution 1: Number conversions ( ) ............... 1274.3.2 Solution 2: Joiner ( ) ............................ 1304.3.3 Solution 3: Reverse String ( ) .................... 1324.3.4 Solution 4: Palindrome ( )........................ 1344.3.5 Solution 5: No Duplicate Chars ( ) ................ 1374.3.6 Solution 6: Remove Duplicate Letters ( ) ........... 1384.3.7 Solution 7: Capitalize ( ) ......................... 1404.3.8 Solution 8: Rotation ( ) .......................... 1444.3.9 Solution 9: Well formed braces ( ) ................ 1454.3.10 Solution 10: Anagram ( ) ........................ 1474.3.11 Solution 11: Morse Code ( )...................... 1484.3.12 Solution 12: Pattern Checker ( ) .................. 1504.3.13 Solution 13: Tennis score ( ) ..................... 1524.3.14 Solution 14: Version numbers ( ).................. 1564.3.15 Solution 15: Conversion strToLong ( ) ........... 1584.3.16 Solution 16: Print Tower ( )....................... 161viii Inhaltsverzeichnis5 Arrays ...................................................... 1655.1 Introduction.................................................. 1655.1.1 One-dimensional arrays ................................. 1665.1.2 Multidimensional arrays ................................. 1765.1.3 Typical errors .......................................... 1835.2 Exercises ................................................... 1845.2.1 Exercise 1: Even before odd numbers ( ) .......... 1845.2.2 Exercise 2: Flip ( ) .............................. 1845.2.3 Exercise 3: Palindrome ( ) ....................... 1845.2.4 Exercise 4: Inplace Rotate ( ) .................... 1855.2.5 Exercise 5: Jewels Board Init ( ) .................. 1855.2.6 Exercise 6: Jewels Board Erase Diamonds ( ) ...... 1875.2.7 Exercise 7: Spiral Traversal ( ) .................... 1885.2.8 Exercise 8: Add One to Array As Number ( ) ....... 1885.2.9 Exercise 9: Sudoku Checker ( )................... 1895.2.10 Exercise 10: Flood-Fill ( ) ........................ 1905.2.11 Exercise 11: Array Merge ( ) ..................... 1915.2.12 Exercise 12: Array Min and Max ( ) ............... 1915.2.13 Exercise 13: Array Split ( ) ....................... 1925.2.14 Exercise 14: Minesweeper Board ( ) .............. 1935.3 Solutions .................................................... 1955.3.1 Solution 1: Even before odd numbers ( ) ........... 1955.3.2 Solution 2: Flip ( ) .............................. 1995.3.3 Solution 3: Palindrome ( )........................ 2035.3.4 Solution 4: Inplace Rotate ( ) ..................... 2055.3.5 Solution 5: Jewels Board Init ( ) .................. 2095.3.6 Solution 6: Jewels Board Erase Diamonds ( ) ...... 2165.3.7 Solution 7: Spiral Traversal ( ) .................... 2255.3.8 Solution 8: Add One to Array As Number ( ) ........ 2305.3.9 Solution 9: Sudoku Checker ( ) ................... 2325.3.10 Solution 10: Flood-Fill ( ) ........................ 2385.3.11 Solution 11: Array Merge ( )...................... 2425.3.12 Solution 12: Array Min and Max ( ) ................ 2465.3.13 Solution 13: Array Split ( ) ....................... 2495.3.14 Solution 14: Minesweeper Board ( ) ............... 254Inhaltsverzeichnis ix6 Date processing ............................................ 2616.1 Introduction.................................................. 2616.1.1 The enumerations DayOfWeek and Month ................ 2616.1.2 The classes LocalDate, LocalTime and LocalDateTime 2626.1.3 The class ZonedDateTime ............................. 2646.1.4 The class ZoneId ..................................... 2656.1.5 Class Duration....................................... 2666.1.6 The class Period ..................................... 2676.1.7 Date arithmetic ........................................ 2686.1.8 Formatting and parsing ................................. 2706.2 Exercises ................................................... 2726.2.1 Exercise 1: Leap Years ( ) ....................... 2726.2.2 Exercise 2: Basic knowledge Date-API ( ).......... 2726.2.3 Exercise 3: Length of Month ( ) ................... 2736.2.4 Exercise 4: Time Zones ( ) ....................... 2736.2.5 Exercise 5: Time Zone Calculation ( ) ............. 2736.2.6 Exercise 6: Calculations with LocalDate ................. 2746.2.7 Exercise 7: Calendar output ( ) ................... 2746.2.8 Exercise 8: Weekdays ( ) ........................ 2756.2.9 Exercise 9: Sundays and leap years ( ) ............ 2766.2.10 Exercise 10: TemporalAdjuster ( )................. 2766.2.11 Exercise 11: NthWeekdayAdjuster ( ) ............. 2776.2.12 Exercise 12: Payday-TemporalAdjuster ( ) ......... 2776.2.13 Exercise 13: Formatting and Parsing ( ) ........... 2786.2.14 Exercise 14: Fault Tolerant Parsing ( ) ............. 2786.3 Solutions .................................................... 2796.3.1 Solution 1: Leap Years ( ) ........................ 2796.3.2 Solution 2: Basic knowledge Date-API ( ) .......... 2806.3.3 Solution 3: Length of Month ( ) ................... 2816.3.4 Solution 4: Time Zones ( ) ....................... 2826.3.5 Solution 5: Time Zone Calculation ( ).............. 2836.3.6 Solution 6: Calculations with LocalDate ................. 2846.3.7 Solution 7: Calendar output ( ) ................... 2866.3.8 Solution 8: Weekdays ( ) ........................ 2896.3.9 Solution 9: Sundays and leap years ( ) ............ 2926.3.10 Solution 10: TemporalAdjuster ( ) ................. 2946.3.11 Solution 11: NthWeekdayAdjuster ( ) .............. 2956.3.12 Solution 12: Payday-TemporalAdjuster ( ) .......... 2976.3.13 Solution 13: Formatting and Parsing ( ) ............ 3016.3.14 Solution 14: Fault Tolerant Parsing ( ) ............. 302x Inhaltsverzeichnis7 Basic data structures: lists, sets, and maps ................... 3057.1 Introduction.................................................. 3057.1.1 The interface Collection.............................. 3057.1.2 Lists and the interface List ......................... 3067.1.3 Sets and the interface Set .............................. 3077.1.4 Key-value mappings and the interface map ................ 3077.1.5 The stack as LIFO data structure ......................... 3087.1.6 The queue as FIFO data structure........................ 3097.2 Exercises ................................................... 3117.2.1 Exercise 1: Set operations ( ) .................... 3117.2.2 Exercise 2: List Reverse ( ) ...................... 3117.2.3 Exercise 3: Remove Duplicates ( ) ................ 3127.2.4 Exercise 4: Maximum Profit ( ) ................... 3127.2.5 Exercise 5: Longest sequence ( ) ................. 3137.2.6 Exercise 6: Own stack ( ) ........................ 3137.2.7 Exercise 7: Well-formed braces ( ) ................ 3137.2.8 Exercise 8: Check Magic Triangle ( ) .............. 3147.2.9 Exercise 9: Pascal's triangle ( ) ................... 3147.2.10 Exercise 10: Most Frequent Elements ( ) .......... 3157.2.11 Exercise 11: Addition of digits ( ) ................. 3157.2.12 Exercise 12: Compound Key ( ) .................. 3167.2.13 Exercise 13: List Merge ( ) ....................... 3167.2.14 Exercise 14: Excel Magic Select ( ) ............... 3177.3 Solutions .................................................... 3187.3.1 Solution 1: Set operations ( ) ..................... 3187.3.2 Solution 2: List Reverse ( )....................... 3237.3.3 Solution 3: Remove Duplicates ( ) ................ 3267.3.4 Solution 4: Maximum Profit ( ) .................... 3277.3.5 Solution 5: Longest sequence ( ) ................. 3307.3.6 Solution 6: Own stack ( ) ........................ 3337.3.7 Solution 7: Well-formed braces ( ) ................ 3357.3.8 Solution 8: Check Magic Triangle ( )............... 3407.3.9 Solution 9: Pascal's triangle ( ) ................... 3447.3.10 Solution 10: Most Frequent Elements ( ) ........... 3467.3.11 Solution 11: Addition of digits ( ) .................. 3487.3.12 Solution 12: Compound Key ( ) ................... 3527.3.13 Solution 13: List Merge ( ) ....................... 3547.3.14 Solution 14: Excel Magic Select ( )................ 356Inhaltsverzeichnis xiII More advanced and tricky topics 3618 Advanced recursion ......................................... 3638.1 Memoization ................................................. 3638.1.1 Memoization for Fibonacci numbers ...................... 3638.1.2 Memoization for Pascal's triangle ......................... 3658.2 Backtracking ................................................. 3688.2.1 n-queens problem ...................................... 3688.3 Exercises ................................................... 3728.3.1 Exercise 1: Towers of Hanoi ( ) ................... 3728.3.2 Exercise 2: Edit Distance ( ) ..................... 3738.3.3 Exercise 3: Longest Common Subsequence ( ) ..... 3738.3.4 Exercise 4: Way out of labyrinth ( ) ................ 3748.3.5 Exercise 5: Sudoku Solver ( ) .................... 3758.3.6 Exercise 6: Math Operator Checker ( ) ............ 3768.3.7 Exercise 7: Water Bucket Problem ( ) ............. 3778.3.8 Exercise 8: All palindrome substrings ( ) ........... 3788.3.9 Exercise 9: n-queens problem ( ) ................. 3788.4 Solutions .................................................... 3798.4.1 Solution 1: Towers of Hanoi ( ) ................... 3798.4.2 Solution 2: Edit Distance ( ) ...................... 3858.4.3 Solution 3: Longest Common Subsequence ( ) ..... 3918.4.4 Solution 4: Way out of labyrinth ( ) ................ 3948.4.5 Solution 5: Sudoku Solver ( ) ..................... 3978.4.6 Solution 6: Math Operator Checker ( ) ............. 4058.4.7 Solution 7: Water Bucket Problem ( ) .............. 4108.4.8 Solution 8: All palindrome substrings ( ) ........... 4138.4.9 Solution 9: n-queens problem ( ).................. 4179 Binary trees ................................................ 4259.1 Introduction.................................................. 4259.1.1 Structure, terminology and examples of use ............... 4259.1.2 Binary trees ........................................... 4269.1.3 Binary trees with order: binary search trees ............... 4279.1.4 Traversals ............................................. 4299.1.5 Balanced trees and other properties ...................... 4329.1.6 Trees for the examples and exercises ..................... 4349.2 Exercises ................................................... 4369.2.1 Exercise 1: Tree Traversal ( ) ..................... 4369.2.2 Exercise 2: In-, Pre- und Postorder iterative ( )...... 4369.2.3 Exercise 3: Tree Height ( ) ....................... 4369.2.4 Exercise 4: Lowest Common Ancestor ( ) .......... 4379.2.5 Exercise 5: Breadth-First ( ) ...................... 437xii Inhaltsverzeichnis9.2.6 Exercise 6: Level Sum ( ) ........................ 4389.2.7 Exercise 7: Tree Rotate ( ) ....................... 4389.2.8 Exercise 8: Reconstruction ( ) .................... 4399.2.9 Exercise 9: Math Evaluation ( ) ................... 4399.2.10 Exercsie 10: Symmetry ( ) ....................... 4409.2.11 Exercise 11: Check Binary Search Tree ( ) ......... 4419.2.12 Exercise 12: Completeness ( ) ................... 4419.2.13 Exercise 13: Tree Printer ( ) ...................... 4439.3 Solutions .................................................... 4469.3.1 Solution 1: Tree Traversal ( ) ..................... 4469.3.2 Solution 2: In-, Pre- und Postorder iterative ( ) ...... 4489.3.3 Solution 3: Tree Height ( ) ....................... 4569.3.4 Solution 4: Lowest Common Ancestor ( ) .......... 4579.3.5 Solution 5: Breadth-First ( ) ...................... 4619.3.6 Solution 6: Level Sum ( ) ........................ 4639.3.7 Solution 7: Tree Rotate ( ) ....................... 4679.3.8 Solution 8: Reconstruction ( ) .................... 4709.3.9 Solution 9: Math Evaluation ( ) ................... 4769.3.10 Solution 10: Symmetry ( ) ....................... 4779.3.11 Solution 11: Check Binary Search Tree ( ) ......... 4819.3.12 Solution 12: Completeness ( ) .................... 4839.3.13 Solution 13: Tree Printer ( ) ...................... 49310 Searching and sorting ....................................... 50310.1 Introduction Search ........................................... 50310.1.1 Searching in Collections and Arrays ...................... 50310.1.2 Binary search with binarySearch() .................... 50510.2 Introduction Sort ............................................. 50610.2.1 Insertion Sort .......................................... 50610.2.2 Selection Sort ......................................... 50810.2.3 Merge Sort ............................................ 51010.2.4 Quick Sort ............................................ 51110.2.5 Bucket Sort ........................................... 51410.2.6 Final Thoughts ........................................ 51510.3 Exercises ................................................... 51610.3.1 Exercise 1: Contains All ( )....................... 51610.3.2 Exercise 2: Partitioning ( ) ....................... 51610.3.3 Exercise 3: Binary Search ( )..................... 51710.3.4 Exercise 4: Insertion Sort ( ) ..................... 51710.3.5 Exercise 5: Selection Sort ( ) ..................... 51810.3.6 Exercise 6: Quick Sort ( ) ........................ 51810.3.7 Exercise 7: Bucket Sort ( ) ....................... 51910.3.8 Exercise 8: Search in rotated data ( ).............. 519Inhaltsverzeichnis xiii10.4 Solutions .................................................... 52110.4.1 Solution 1: Contains All ( ) ....................... 52110.4.2 Solution 2: Partitioning ( ) ........................ 52210.4.3 Solution 3: Binary Search ( ) ..................... 52410.4.4 Solution 4: Insertion Sort ( )...................... 52810.4.5 Solution 5: Selection Sort ( ) ..................... 52910.4.6 Solution 6: Quick Sort ( ) ........................ 53010.4.7 Solution 7: Bucket Sort ( ) ....................... 53210.4.8 Solution 8: Search in rotated data ( ) .............. 53411 Conclusion and supplementary literature ..................... 54111.1 Conclusion .................................................. 54111.1.1 Lessons learned per chapter ............................ 54111.1.2 Noteworthy ............................................ 54311.2 Puzzles ..................................................... 54411.2.1 Gold bags - detect the fake ............................. 54511.2.2 Horse race - determine fastest three horses ............... 54611.3 Supplementary literature ...................................... 549III Appendix 553A Quick start JShell ........................................... 555A.1 Java + REPL => jshell ...................................... 555B Short introduction JUnit 5 ................................... 561B.1 Writing and running tests ...................................... 561B.1.1 Example: A first unit test ................................ 561B.1.2 Fundamentals of writing and running tests................. 562B.1.3 Handling expected exceptions with assertThrows() ...... 565B.2 Parameterized tests with JUnit 5 ............................... 566C Quick start O-notation ....................................... 569C.1 Estimations with the O-notation ................................ 569C.1.1 Complexity classes ..................................... 570C.1.2 Complexity and program running time .................... 572Michael Inden is an Oracle-certified Java developer with over 20 years of professional experience designing complex software systems for international companies. There, he has worked in various roles such as SW developer, SW architect, consultant, team leader, CTO, head of academy, and trainer. Currently, he is working as a freelancer.
    His special interests are creating high-quality applications with ergonomic GUIs, developing and solving programming puzzles, and coaching. He likes to pass on his knowledge and has led various courses and talks, both internally and externally, as well as at conferences such as JAX/W-JAX, JAX London, and Oracle Code One.
    Besides, he is also an author of technical books. His german books, among others "Der Weg zum Java-Profi", Java Challenge", "Python Challenge" are all published by dpunkt.verlag.

    Caractéristiques techniques

      PAPIER
    Éditeur(s) Apress
    Auteur(s) Michael Inden
    Parution 03/12/2021
    Nb. de pages 768
    EAN13 9781484273944

    Avantages Eyrolles.com

    Livraison à partir de 0,01 en France métropolitaine
    Paiement en ligne SÉCURISÉ
    Livraison dans le monde
    Retour sous 15 jours
    + d'un million et demi de livres disponibles
    satisfait ou remboursé
    Satisfait ou remboursé
    Paiement sécurisé
    modes de paiement
    Paiement à l'expédition
    partout dans le monde
    Livraison partout dans le monde
    Service clients sav.client@eyrolles.com
    librairie française
    Librairie française depuis 1925
    Recevez nos newsletters
    Vous serez régulièrement informé(e) de toutes nos actualités.
    Inscription