I've opened this thread following rotten69's suggestion for "Java projects for beginners".
To get things started I've posted a project in a format that makes sense to me; please feel free to follow that format, or to do it in some completely different style if that seems better.
Let's see how that goes, and when things settle down I'll tidy it up and make it a sticky.
J.

===========================================================================================

This thread is for Java project suggestions.

You have attended the lectures, read the books. watched the videos, but the only way to get good at Java is to write some real programs. These suggestions are for learners at every stage and each one will help develop your skills in one or more aspects of Java. Please feel free to add new project suggestions of your own.

This is NOT the place to discuss detailed solutions, nor to ask for help when you attempt one of these projects. If we allow that in this thread it will rapidly become too large and tangled to be useful. For any kind of discussion about problems or solutions start your own new thread. You can always PM me or another mod to get your thread cross-linked from the corresponding item in this thread.

Special thanks and appreciation are due to rotten69, who suggested this in the first place, and kept pushing until it happened.

anand01 commented: good one james +4
~s.o.s~ commented: +1 indeed +14
Dinesh_9 commented: Yes this is an great way to learn +0

Recommended Answers

All 66 Replies

Multi-Window currency converter.

You have already done some basic Swing programming and can create windows, handle ActionEvents etc. This project will introduce you to Model-View-Controller architecture and the Observer Pattern as used throughout Swing and real-life GUI projects. This is the standard solution for displaying shared data in multiple windows.

Create a multi-window currency converter (US Dollars, Euros, GB Pounds etc) etc. Allow the user to create any number of windows, each displaying in one of the currencies. Each window should display the same value, converted to its appropriate currency. Allow the user to change any of the values in any of the windows, and update all the other windows to keep the values consistent. For extra fun, allow different ways to display the values, eg just as a number or as a JSlider.
You will find that the only sensible solution is to have a shared Money class that supports ChangeListeners, and have all of the windows add themselves as listeners so they know when the values have been updated. You will also need some kind of master controller class/window to manage the whole thing.

Like James mentioned in the first post, suggest cool ideas for Java learners and show them what they can do by programming in Java. I gotta be honest with you here. I have heard this statement a lot 'You can do everything in Java'. Right. I get it. But what do you actually mean by everything? What if I'm interested in breaking into computers. Will learning Java help me achieve that? That is when I started learning it at uni. I had so many questions for my lecturer. It was kinda hard to ask your lecturer every single question you could think of.

I got an idea for java projects. Make a simple calculator.. You will require to write a few methods (subtraction, addition, division and multiplication) as well as to do some checking on inputs. For example, if something is divided by ZERO, then what happens? In fact, it can't be divided by zero and should return an error.

it is entirely up to you whether you want to design a GUI for the calculator or not. Try making it look a little fancy. Let it display time if you want or even surprise users by displaying a WoW message if they calculate a number greater than 5000.

If you face any problem with the projects suggested in this thread, PLEASE open a new thread with a name like below:

Java projects for learners - "Calculator"

For this example, I used the project name calculator. However, you will need to change what's in between the double qoutes depending on the project you work on!

I have some ideas, too.

One,
create an app that solves sudoku puzzles. you give it a situation, and then it solves it. You can create a GUI to make challenging your app with a sudoku puzzle easier.

Two,
create an app that seeks, finds, and shows all ways of placing eight chess queens on a chess board with no two of them on the same row, column, or diagonal. Another way to look at the problem is: every row and every column have each exatcly one queen on them.

Three,
create an app that simulates motion of earth around sun, and moon around earth. The challenge here is determining the position of moon as earth moves.

Perhaps a little mathematically challenging, but I did built these when I was more of a beginner, and I believe the experience has helped me.

Heres a good one that I made..
The countdown game as shown on tv in england...
There are 6 numbers, say 1,2,5,10,25,100 and a target say 603
My program generates the target in the smallest number of calcuations
Using only +,-,x,divide.
Or the number closest possible to target.
Its basically done with brute force testing all posibilites,
but it still has to be programmed efficiently.
Its fun to see it solve problems though, I've built a game from it closely
matching the tv game.

That looks good - can you add an example or two to show how the game works in practice? thanks.

@ cms271828 .. That sounds good. More details will be great though. I'm assuming that you pass a number to the program and it sees that number if it is close to the target number, Right?
Did you make a GUI for the game?

Maybe some good suggestions involving networking!

some good suggestions involving networking!

I can redirect you to a tutorial on networking. Check out this link It may be useful for what you need to do or even to get started with network programming.

Make a simple email client in java(this is intermeddiate), and you will have to use the javaMail API for the mail part.

You guys have got brilliant ideas and lots of ways that anyone can use to practise their Java knowledge. But what we are lacking/missing is that we don't have enough instructions on how you'd approach such an idea like making an email client or a game. Due to beginners' knowledge or amount of practice in Java programming, they may think it is a kinda difficult task to do.

What would be fantastic is to see someone who has got the time to take us through a simple idea.

cheers,

I agree with rotten69.
If anyone out there would like to contribute some "how to do it" please start your own thread and I'll link to it here (otherwize this thread will become too big and hard to follow).

You will suggest three application.
1. A simple vending machine with no UI, this will introduce you to OOP and also some build in data structure like List.
2. A webapp version of vending machine, this will introduce you to web-development and OOP concept.
3. A Webapp or swing application of a simple banking system with database, this will introduce you to hashing technique, jdbc or other database connection driver and some security concept that is must need to be an excellent programmer.

I will post some how to do it tomorrow.

Awesome, guys. Keep the thread going.It seems to be going a bit slowly but we are getting more people to join in and share their fantastic ideas.

Note: @James.. Please edit the first post in this thread and highlight the key points and guidelines such as if someone wants to take people through their idea/ideas, they can do so in a new thread then they post a link to them. Therefore, we will have easy access to them in this thread.

barramedalb - thank you for your suggestions. Could you please add some more detail to each of those - not solutions, but some specifications so people will know what you mean by "simple vending machine" etc. Thanks.

@barramedalb.. Thanks for the great ideas. Feel free to open a new thread and do a walk-through your idea/ideas if you can. Once your thread is on the go, post a link to it here so everyone will be able to access it easily and we are trying to keep them in one place for future reference. Preferably, to keep the format as this forum, posts will be easy to follow.

@JamesCherrill - thanks for the comment, I will discuss more of the suggestion on the new thread I will create.

@rotten69 - Welcome, I make sure that I will follow the same format of that thread.

commented: We'll be waiting on the good topics you'll do for us.. Cheers! +5

@barramedalb.. Thanks. We all hope to see the threads up in the forum.

I'm new to programming myself. I'll share some projects im doing in my spare time while not in class at university. I am starting my sophmore year of comp sci and i am only having about 1 year max of programming expierence.

I don't know how many projects ill reccomend, so i will just number them as if my thoughts are an ArrayList (yes i made a bad joke).

0) Tic Tac Toe simulations: Make Tic Tac Toe with a working win condition, get two players to play against each other. You can do Artificial Intelligence if you want, but for this exercise its not required. It just needs to be random. Have it simulate a million games and reccord your win/loss/tie stats. I am stuck on it, i got the logic down. But it just has so many logical errors taht it simply doesn't work.

1) Weekly Planner: Create a program that helps you organize your weekly plans. The following capabilities and conditions should be met. There should be realistic times and days for weeks, days and hours. You should not do months and number the amount of days or create a calender, just a weekly planner. There should be a function that checks for all available time blocks in each day and passes a feed back to the user that tells him what is available for him to schedule his plans for. It should pass back ALL POSSIBLE blocks, so if hours 0 1 2 3 4 are avaible and he wants 3 hour blocks it should pass back, 0 1 2, 1 2 3, 2 3 4. It should also work for 23 0 1, if those are available. There should be two methods that allow the user to add an event. One works for just one hour. The other works for multiple hours. Also their should be two more methods that do the same thing as the previous but makes it so you can add on multiple days and it shouldn't be just all days, but any amount or any order of days you want to pick. There should be manditory remove methods to take events out of your planner and when you try to add an event to an already added event you should return some sort of feed telling him what activities conflict and the hours they are conflicting. The hours are done on european scale for obvious reasons, but if you want to make it american scale have fun. Their should be a priority function. Give the user the choice to rate the priority of his events he schedules, if an event has a higher priority when overlapping in the schedule, it wont pass back an error it will simply replace over it. Have a print feed option to give the person an easier view of his schedule (or do something with your gui your choice). But the manditory criteria is you have to lets say you have these following hours blocked off for reading, 12 13 14 15. Your feed should read 12 - 15 Reading. Something i just thought about adding to the pile right now is, when you add a higher priority still send back the conflicting times but instead of saying its conflicting tell them it was replaced. I am currently working on the GUI for this project and the priority settings (which wont take long at all). When i finish it, i will make a how to with source code. I would say this is beginner stuff since the most complicated thing i used as in structures and such is a 3-Dimensional Array or type week,day,hour.

2) My last project i will share. Create a fighter simulation "game". Brain storm fighting, come up with ways to kill people as many as possible. Come up with as many attributes and ways to affect fighting. The goal is to come up with so many variables and such and things to deal with to the point you spend 5-10 minutes per each single simulation when simulation games should be done in matter of seconds without gui or information being presented. Once you have gotten to the point where you can no longer do a million simulations within a day. It has become time to get the point of the project to come into play. Your job is to make it so you can simulate that in one day, however you find possible. Start out with the most brute force methods, then slowly make things more effecient. The purpose is to learn and find out the mistakes and flaws of doing things in brute force and help understand the importance of effiencicy.
I am still working on this. Nowhere near close to doing it, i cant even simulate 1000 fights in one day lol.

commented: keep posting projects and walk us through some if you can. That'd be great. +0
commented: Good constructive contribution - Welcome Pat! +14
commented: Tic Tac Toe AI is surprisingly hard to get right. Implement the MinMax algorithm (with alpha beta pruning if you want) to solve it. One hint: The scoring needs to take the "level" into account to be flawless. +0

Awesome. That sounds like you're an experienced programming guy. Welcome to the community.

I tried designing the Tic-Tac-Toe game in C(command-line) and it took some 1100 lines of code.The AI was designed to allow the user a chance to start a game.If it is multi-player,then it can be designed very easily.Even two-player chess will be less sophisticated to design.

you guys are great for this thread it really gonna keep juvenile java programmers like us real busy, guys just keep posting more cos sometimes it difficult for newbies to think of a problem just like that.
great work guys

Where are our Java gurus? And the people who have promised us some fantastic projects?

Remember that (a) the last weeks have been prime holiday season and (b) everyone here is a volunteer. Maybe we will see more contributions as everyone goes back to work and starts getting bored. Or, maybe, not many people are interested? Time will tell...

I haven't been able to contribute in this forum myself because I'm pretty busy with uni stuff. Although, I will be getting on holidays in about 6 weeks or so. Then, I will have enough time for Java. I only think without offence to anyone here that development in java is kinda slow. By the way, I don't live where you're living so I wouldn't know if it is a holiday season or not.

I am not a JAVA developer, but I was asked to post a few simple project ideas taht are a bit cross categorical...

Some ideas I came up with were:

1) A program that searches images (jpegs or otherwise), and categorizes them by either name, pixel count, or even common pixel colors (such as, more than 2000 red pixels, or blue pixels, etc.. based on RGB).

2) A program that creates a MIDI or WAV file that makes tones based on random information, or a set structure of information (such as a name, with each letter corresponding to a frequency)

3) A more in depth program would be for people who like to categorize - my example was a bird watching program, that pulled up a picture of the bird searched, and displayed info about that bird, and possibly linked to similar bird types/families.

4) Java and Android are buddies - why not make an app? Something simple like an app to get your location, and the 3 closest friends from your contacts list.

5) Something as simple as getting OS/Platform(hardware) info and displaying it nicely, and creating a way to traverse files to practice mastery of file structures.

Regardless of what the project is, it doesn't have to be useful - the idea is to see if you can do it. If not, find out why you can't, and learn from the experience! Find something that interests you, and pursue it!

Ryan

commented: Constructive input, thank you +14

How about this app

  1. write gui app with java to browse and store file to a remoter server

I'm thinking of making a simple calculator that does temperture conversion.

here are a few projects i really enjoyed doing on my own time during college :

mine sweeper. (i even added a delay on the empty tile discovery so that you could see the path the algorithm would take :D )

perfect maze. (this was actually an assignement) the program would randomly select a tile in a grid system, and randomly build a maze using all tiles and no "interuption" , might not be very clear description , its been a while, but it was fun!

Gravity ball. Simple form with a ball drawn at the bottom, i experimented with diferent ways to launch it with different variables like a "bounce" factor, the goal was to get as close to a real physics feel with the ball acceleration and to deal with contact between the ball and the edges of the form.

"Turtle Drawer" (this was also an assignement) Simply had to reproduce the famous turtle drawing thing, never actually used the real thing but mine could read "list of commands" text file and draw the result , with a customizable delay timer to speed up or slow down the drawing. It could also save the results as .jpg or .png , and finaly, you could start from scratch and give it commands through a custom gui in a different JFrame with custom user controls, and it would write the resulting commands in a "list of commands" text file.

Bézier curve (also a fun assignement from college) mix of math and gui here, we could manualy place/add/remove/move points on the panel and it would modify a bezier curve that would include all points.

one last before i get back to work, this was the BIG project in my very first java class , had all semester to finish it. its a simple console application , you type in a sentence, and it posts that same sentence with letters made of 5x7ish characters , in my case the default was "*" but it was easily changeable through a constant variable. example "hello world!" would print out something like:

*    *  *****  *      *      *****      * * *  *****  ****   *      ****    **
*    *  *      *      *      *   *      * * *  *   *  *   *  *      *   *   **
******  ****   *      *      *   *      * * *  *   *  ****   *      *   *   **
*    *  *      *      *      *   *      ** **  *   *  *  *   *      *   *  
*    *  *****  *****  *****  *****      *   *  *****  *   *  *****  ****    **

obviously you cant print letter by letter in a console setting so we HAD to figure how many letters would fit in a line , take those , make 7 (i think it was seven, i know my exemple has 5 lines high tho, been a while) strings, and write those lines one at a time. The hardest part, was that our teacher said "if a word does'nt fit on whats left of the line, it should be moved to the line below, UNLESS, the whole word doesn't fit on a single line, in which case you will have to split it"

He advised us to use StringTokenizer but i did it all by hand! xD

Good luck, ill get back with some more college memories and fun times.
And when i get arround to it i might post some snippets with these problems solutions!

@philip ... Thanks pal for the suggestions, I do appreciate that as much as others do. What we would like to see, if you have enough time to take us through the solutions, is a tutorial(s) in new threads. This would be pretty awesome to see in the Java forum.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.