Welcome to my Java programming journey! This repository documents my progress from beginner to advanced Java concepts through practical projects.
- ✅ Master Java syntax and core concepts
- ✅ Understand object-oriented programming principles
- ✅ Develop GUI applications
- ✅ Work with files and databases
- ✅ Build web-connected applications
- ✅ Apply best practices and design patterns
As I complete each project, I'll add my thoughts and lessons learned here.
Created a simple console shopping cart that handles item name, price, and quantity to calculate purchase totals.
Learned: Scanner input, data types (String, double, int), basic I/O, arithmetic operations, and string concatenation.
Developed a console application to calculate compound interest using user inputs for principal, rate, compounding frequency, and time period.
Learned: Advanced mathematical calculations using Math.pow(), formatted output with System.out.printf(), handling financial calculations, and precise decimal representations.
Key Techniques: Scanner input, mathematical formulas, type conversion, and basic financial computation.
Created a console application that converts weights between pounds and kilograms using user-selected conversion options.
Learned: Conditional logic with if-else, user input validation, type conversion, and implementing simple conversion formulas.
Key Techniques: Menu-driven program, mathematical conversions, formatted output, and basic error handling.
Implemented a simple console-based banking application with options to check balance, deposit, withdraw, and exit.
Learned: Loop-based menu systems, modular programming with static methods, parameter passing, switch expressions (->), and persistent state management.
Key Techniques: Input validation, maintaining state across operations, defensive programming (checking for negative values and insufficient funds), and user interface design.
Developed a console-based application that simulates rolling multiple dice with visual representation of each die face and calculates the total sum.
Learned: Random number generation, ASCII art implementation using text blocks, switch expressions with arrow syntax, and accumulating values across iterations.
Key Techniques: User input validation, ASCII art for visualization, Java text blocks, switch expressions, loops for multiple dice rolls, and running totals.
Developed a console-based slot machine game that simulates a real-world slot machine with multiple symbols, betting system, and dynamic payouts based on matching patterns.
Learned: Managing game state, implementing game mechanics with random outcomes, creating engaging user interfaces in console applications, and handling in-game currency/economy.
Key Techniques: Random symbol generation, pattern matching for win conditions, variable payout calculations based on symbol value, game loop management, and handling persistent game state between rounds. javaCopy
Developed a console-based audio player application that can play, stop, and reset audio files (.wav, .au, .aiff) using Java's sound API.
Learned: Working with Java's sound API (javax.sound.sampled), handling audio streams, resource management with try-with-resources, and implementing audio playback controls.
Key Techniques: File I/O operations, audio stream management, exception handling with multiple catch blocks, try-with-resources for automatic resource cleanup, and implementing an interactive menu system.
Developed a console-based Hangman game that reads words from a text file, randomly selects one for the player to guess, and provides visual feedback through ASCII art of the hangman.
Learned: File reading operations, ArrayList manipulation, character handling, ASCII art implementation with text blocks, and game state management.
Key Techniques: BufferedReader for file operations, dynamic word selection using Random, ArrayList for tracking game state, character-by-character comparison, and progressive visual feedback based on player performance.
Developed a console application that creates a countdown timer from a user-specified number of seconds and displays a celebration message when the countdown reaches zero.
Learned: Working with Java's Timer and TimerTask classes, implementing scheduled tasks, handling time-based events, and creating anonymous inner classes.
Key Techniques: Scheduling tasks at fixed intervals, timer management, anonymous class implementation, user input for customization, and event-driven programming concepts.
Developed a multithreaded alarm clock application that allows users to set an alarm time, displays a real-time clock, and plays an audio file when the alarm time is reached.
Learned: Working with Java's time API, multithreading concepts, implementing the Runnable interface, handling audio playback, and creating real-time updating displays.
Key Techniques: Thread management, time parsing and formatting, continuous time display with carriage return, audio file playback, and implementing multiple classes with specific responsibilities.
- Java SE Development Kit (JDK)
- Visual Studio Code with Java extensions
- Git & GitHub for version control
- Additional libraries and frameworks as needed
Feel free to reach out if you have suggestions or want to collaborate!
⭐ Star this repository if you find it interesting!