Simple exchange calculator in Java - structure and testsCalculating PayrollCash Register ChallengeExact Replica of Windows Minesweeper in JavaSimple Java addition calculatorImplementation of stackSimple Calculator in Java and SwingNeed help to make a more secure AES classChange-Making Problem SolutionCode that prints ASCII bowties to screen given inputsHL7 message builder and unit tests
Size of subfigure fitting its content (tikzpicture)
Ambiguity in the definition of entropy
How did the Super Star Destroyer Executor get destroyed exactly?
Why no variance term in Bayesian logistic regression?
GFCI outlets - can they be repaired? Are they really needed at the end of a circuit?
Can a virus destroy the BIOS of a modern computer?
ssTTsSTtRrriinInnnnNNNIiinngg
How badly should I try to prevent a user from XSSing themselves?
Can we compute the area of a quadrilateral with one right angle when we only know the lengths of any three sides?
How to compactly explain secondary and tertiary characters without resorting to stereotypes?
What does “the session was packed” mean in this context?
How do I know where to place holes on an instrument?
Arrow those variables!
Bullying boss launched a smear campaign and made me unemployable
How to show a landlord what we have in savings?
How would I stat a creature to be immune to everything but the Magic Missile spell? (just for fun)
Unlock My Phone! February 2018
Is it logically or scientifically possible to artificially send energy to the body?
Little known, relatively unlikely, but scientifically plausible, apocalyptic (or near apocalyptic) events
How to prevent "they're falling in love" trope
Do scales need to be in alphabetical order?
How do conventional missiles fly?
Can my sorcerer use a spellbook only to collect spells and scribe scrolls, not cast?
Why do bosons tend to occupy the same state?
Simple exchange calculator in Java - structure and tests
Calculating PayrollCash Register ChallengeExact Replica of Windows Minesweeper in JavaSimple Java addition calculatorImplementation of stackSimple Calculator in Java and SwingNeed help to make a more secure AES classChange-Making Problem SolutionCode that prints ASCII bowties to screen given inputsHL7 message builder and unit tests
$begingroup$
I am trying to learn how to correctly structure my projects and write a good, clean code. I would also like to learn how to write good tests. Can you please review it and give me some tips and tricks how to make that better?
The application is calculating the exchange from the bill for lemonade. Lemonade costs 5$ and client may pay with 5$, 10$ or 20$. At the beginning there is no change available.
Project structure
My project structure is as follows:
LemonadeChange (project) with src package and 4 packages inside:
- app (contains Main)
- calculatorImp (contains CalculatorLongImp and CalculatorShortImp)
- calculatorInterface (contains CalculatorInterface)
- test (contains CalculatorTest)
Classes
Main
public class Main
public static void main(int[] args)
CalculatorInterface calc = new CalculatorLongImp();
calc.lemonadeChange(args);
CalculatorInterface
public interface CalculatorInterface
public boolean lemonadeChange(int[] bills);
CalculatorLongImp
public class CalculatorLongImp implements CalculatorInterface
private int five = 0;
private int ten = 0;
int acc = 0;
public boolean lemonadeChange(int[] bills)
for (int bill : bills)
if(bill == 5)
five++;
else if(bill == 10)
five--;
ten++;
else
if(ten >= 1 && five >= 1)
ten--;
five--;
else if (five >= 3)
five -= 3;
else
acc++;
if(acc == 0)
return true;
else
return false;
CalculatorTest
public class CalculatorTest
@Test
public void testAllChangeShouldBePossibleToGive()
int[] bills = 5,5,5,10,20;
CalculatorInterface calc = new CalculatorLongImp();
assertTrue(calc.lemonadeChange(bills));
calc = new CalculatorShortImp();
assertTrue(calc.lemonadeChange(bills));
@Test
public void testAllChangeShouldNotBePossibleToGive()
int[] bills = 20;
CalculatorInterface calc = new CalculatorLongImp();
assertFalse(calc.lemonadeChange(bills));
calc = new CalculatorShortImp();
assertFalse(calc.lemonadeChange(bills));
@Test
public void testAllChangeShouldNotBePossibleToGiveSecond()
int[] bills = 10, 20;
CalculatorInterface calc = new CalculatorLongImp();
assertFalse(calc.lemonadeChange(bills));
calc = new CalculatorShortImp();
assertFalse(calc.lemonadeChange(bills));
@Test
public void testAllChangeShouldBePossibleToGiveSecond()
int[] bills = 5, 5, 10, 20;
CalculatorInterface calc = new CalculatorLongImp();
assertTrue(calc.lemonadeChange(bills));
calc = new CalculatorShortImp();
assertTrue(calc.lemonadeChange(bills));
@Test
public void testAllChangeShouldNotBePossibleToGiveThird()
int[] bills = 10, 20, 5, 5;
CalculatorInterface calc = new CalculatorLongImp();
assertFalse(calc.lemonadeChange(bills));
calc = new CalculatorShortImp();
assertFalse(calc.lemonadeChange(bills));
@Test
public void testAllChangeShouldBePossibleToGiveThird()
int[] bills = 5,5,5,5,20;
CalculatorInterface calc = new CalculatorLongImp();
assertTrue(calc.lemonadeChange(bills));
calc = new CalculatorShortImp();
assertTrue(calc.lemonadeChange(bills));
How would you improve that? Any tips and tricks welcomed!
Please let me know if you want to see the task that it solves - that is one of the tasks on LeetCode, so I can post it if that makes review easier.
java algorithm calculator
New contributor
$endgroup$
add a comment |
$begingroup$
I am trying to learn how to correctly structure my projects and write a good, clean code. I would also like to learn how to write good tests. Can you please review it and give me some tips and tricks how to make that better?
The application is calculating the exchange from the bill for lemonade. Lemonade costs 5$ and client may pay with 5$, 10$ or 20$. At the beginning there is no change available.
Project structure
My project structure is as follows:
LemonadeChange (project) with src package and 4 packages inside:
- app (contains Main)
- calculatorImp (contains CalculatorLongImp and CalculatorShortImp)
- calculatorInterface (contains CalculatorInterface)
- test (contains CalculatorTest)
Classes
Main
public class Main
public static void main(int[] args)
CalculatorInterface calc = new CalculatorLongImp();
calc.lemonadeChange(args);
CalculatorInterface
public interface CalculatorInterface
public boolean lemonadeChange(int[] bills);
CalculatorLongImp
public class CalculatorLongImp implements CalculatorInterface
private int five = 0;
private int ten = 0;
int acc = 0;
public boolean lemonadeChange(int[] bills)
for (int bill : bills)
if(bill == 5)
five++;
else if(bill == 10)
five--;
ten++;
else
if(ten >= 1 && five >= 1)
ten--;
five--;
else if (five >= 3)
five -= 3;
else
acc++;
if(acc == 0)
return true;
else
return false;
CalculatorTest
public class CalculatorTest
@Test
public void testAllChangeShouldBePossibleToGive()
int[] bills = 5,5,5,10,20;
CalculatorInterface calc = new CalculatorLongImp();
assertTrue(calc.lemonadeChange(bills));
calc = new CalculatorShortImp();
assertTrue(calc.lemonadeChange(bills));
@Test
public void testAllChangeShouldNotBePossibleToGive()
int[] bills = 20;
CalculatorInterface calc = new CalculatorLongImp();
assertFalse(calc.lemonadeChange(bills));
calc = new CalculatorShortImp();
assertFalse(calc.lemonadeChange(bills));
@Test
public void testAllChangeShouldNotBePossibleToGiveSecond()
int[] bills = 10, 20;
CalculatorInterface calc = new CalculatorLongImp();
assertFalse(calc.lemonadeChange(bills));
calc = new CalculatorShortImp();
assertFalse(calc.lemonadeChange(bills));
@Test
public void testAllChangeShouldBePossibleToGiveSecond()
int[] bills = 5, 5, 10, 20;
CalculatorInterface calc = new CalculatorLongImp();
assertTrue(calc.lemonadeChange(bills));
calc = new CalculatorShortImp();
assertTrue(calc.lemonadeChange(bills));
@Test
public void testAllChangeShouldNotBePossibleToGiveThird()
int[] bills = 10, 20, 5, 5;
CalculatorInterface calc = new CalculatorLongImp();
assertFalse(calc.lemonadeChange(bills));
calc = new CalculatorShortImp();
assertFalse(calc.lemonadeChange(bills));
@Test
public void testAllChangeShouldBePossibleToGiveThird()
int[] bills = 5,5,5,5,20;
CalculatorInterface calc = new CalculatorLongImp();
assertTrue(calc.lemonadeChange(bills));
calc = new CalculatorShortImp();
assertTrue(calc.lemonadeChange(bills));
How would you improve that? Any tips and tricks welcomed!
Please let me know if you want to see the task that it solves - that is one of the tasks on LeetCode, so I can post it if that makes review easier.
java algorithm calculator
New contributor
$endgroup$
add a comment |
$begingroup$
I am trying to learn how to correctly structure my projects and write a good, clean code. I would also like to learn how to write good tests. Can you please review it and give me some tips and tricks how to make that better?
The application is calculating the exchange from the bill for lemonade. Lemonade costs 5$ and client may pay with 5$, 10$ or 20$. At the beginning there is no change available.
Project structure
My project structure is as follows:
LemonadeChange (project) with src package and 4 packages inside:
- app (contains Main)
- calculatorImp (contains CalculatorLongImp and CalculatorShortImp)
- calculatorInterface (contains CalculatorInterface)
- test (contains CalculatorTest)
Classes
Main
public class Main
public static void main(int[] args)
CalculatorInterface calc = new CalculatorLongImp();
calc.lemonadeChange(args);
CalculatorInterface
public interface CalculatorInterface
public boolean lemonadeChange(int[] bills);
CalculatorLongImp
public class CalculatorLongImp implements CalculatorInterface
private int five = 0;
private int ten = 0;
int acc = 0;
public boolean lemonadeChange(int[] bills)
for (int bill : bills)
if(bill == 5)
five++;
else if(bill == 10)
five--;
ten++;
else
if(ten >= 1 && five >= 1)
ten--;
five--;
else if (five >= 3)
five -= 3;
else
acc++;
if(acc == 0)
return true;
else
return false;
CalculatorTest
public class CalculatorTest
@Test
public void testAllChangeShouldBePossibleToGive()
int[] bills = 5,5,5,10,20;
CalculatorInterface calc = new CalculatorLongImp();
assertTrue(calc.lemonadeChange(bills));
calc = new CalculatorShortImp();
assertTrue(calc.lemonadeChange(bills));
@Test
public void testAllChangeShouldNotBePossibleToGive()
int[] bills = 20;
CalculatorInterface calc = new CalculatorLongImp();
assertFalse(calc.lemonadeChange(bills));
calc = new CalculatorShortImp();
assertFalse(calc.lemonadeChange(bills));
@Test
public void testAllChangeShouldNotBePossibleToGiveSecond()
int[] bills = 10, 20;
CalculatorInterface calc = new CalculatorLongImp();
assertFalse(calc.lemonadeChange(bills));
calc = new CalculatorShortImp();
assertFalse(calc.lemonadeChange(bills));
@Test
public void testAllChangeShouldBePossibleToGiveSecond()
int[] bills = 5, 5, 10, 20;
CalculatorInterface calc = new CalculatorLongImp();
assertTrue(calc.lemonadeChange(bills));
calc = new CalculatorShortImp();
assertTrue(calc.lemonadeChange(bills));
@Test
public void testAllChangeShouldNotBePossibleToGiveThird()
int[] bills = 10, 20, 5, 5;
CalculatorInterface calc = new CalculatorLongImp();
assertFalse(calc.lemonadeChange(bills));
calc = new CalculatorShortImp();
assertFalse(calc.lemonadeChange(bills));
@Test
public void testAllChangeShouldBePossibleToGiveThird()
int[] bills = 5,5,5,5,20;
CalculatorInterface calc = new CalculatorLongImp();
assertTrue(calc.lemonadeChange(bills));
calc = new CalculatorShortImp();
assertTrue(calc.lemonadeChange(bills));
How would you improve that? Any tips and tricks welcomed!
Please let me know if you want to see the task that it solves - that is one of the tasks on LeetCode, so I can post it if that makes review easier.
java algorithm calculator
New contributor
$endgroup$
I am trying to learn how to correctly structure my projects and write a good, clean code. I would also like to learn how to write good tests. Can you please review it and give me some tips and tricks how to make that better?
The application is calculating the exchange from the bill for lemonade. Lemonade costs 5$ and client may pay with 5$, 10$ or 20$. At the beginning there is no change available.
Project structure
My project structure is as follows:
LemonadeChange (project) with src package and 4 packages inside:
- app (contains Main)
- calculatorImp (contains CalculatorLongImp and CalculatorShortImp)
- calculatorInterface (contains CalculatorInterface)
- test (contains CalculatorTest)
Classes
Main
public class Main
public static void main(int[] args)
CalculatorInterface calc = new CalculatorLongImp();
calc.lemonadeChange(args);
CalculatorInterface
public interface CalculatorInterface
public boolean lemonadeChange(int[] bills);
CalculatorLongImp
public class CalculatorLongImp implements CalculatorInterface
private int five = 0;
private int ten = 0;
int acc = 0;
public boolean lemonadeChange(int[] bills)
for (int bill : bills)
if(bill == 5)
five++;
else if(bill == 10)
five--;
ten++;
else
if(ten >= 1 && five >= 1)
ten--;
five--;
else if (five >= 3)
five -= 3;
else
acc++;
if(acc == 0)
return true;
else
return false;
CalculatorTest
public class CalculatorTest
@Test
public void testAllChangeShouldBePossibleToGive()
int[] bills = 5,5,5,10,20;
CalculatorInterface calc = new CalculatorLongImp();
assertTrue(calc.lemonadeChange(bills));
calc = new CalculatorShortImp();
assertTrue(calc.lemonadeChange(bills));
@Test
public void testAllChangeShouldNotBePossibleToGive()
int[] bills = 20;
CalculatorInterface calc = new CalculatorLongImp();
assertFalse(calc.lemonadeChange(bills));
calc = new CalculatorShortImp();
assertFalse(calc.lemonadeChange(bills));
@Test
public void testAllChangeShouldNotBePossibleToGiveSecond()
int[] bills = 10, 20;
CalculatorInterface calc = new CalculatorLongImp();
assertFalse(calc.lemonadeChange(bills));
calc = new CalculatorShortImp();
assertFalse(calc.lemonadeChange(bills));
@Test
public void testAllChangeShouldBePossibleToGiveSecond()
int[] bills = 5, 5, 10, 20;
CalculatorInterface calc = new CalculatorLongImp();
assertTrue(calc.lemonadeChange(bills));
calc = new CalculatorShortImp();
assertTrue(calc.lemonadeChange(bills));
@Test
public void testAllChangeShouldNotBePossibleToGiveThird()
int[] bills = 10, 20, 5, 5;
CalculatorInterface calc = new CalculatorLongImp();
assertFalse(calc.lemonadeChange(bills));
calc = new CalculatorShortImp();
assertFalse(calc.lemonadeChange(bills));
@Test
public void testAllChangeShouldBePossibleToGiveThird()
int[] bills = 5,5,5,5,20;
CalculatorInterface calc = new CalculatorLongImp();
assertTrue(calc.lemonadeChange(bills));
calc = new CalculatorShortImp();
assertTrue(calc.lemonadeChange(bills));
How would you improve that? Any tips and tricks welcomed!
Please let me know if you want to see the task that it solves - that is one of the tasks on LeetCode, so I can post it if that makes review easier.
java algorithm calculator
java algorithm calculator
New contributor
New contributor
New contributor
asked 1 min ago
MarcinMarcin
1
1
New contributor
New contributor
add a comment |
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function ()
return StackExchange.using("mathjaxEditing", function ()
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
);
);
, "mathjax-editing");
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "196"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Marcin is a new contributor. Be nice, and check out our Code of Conduct.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e)
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom))
StackExchange.using('gps', function() StackExchange.gps.track('embedded_signup_form.view', location: 'question_page' ); );
$window.unbind('scroll', onScroll);
;
$window.on('scroll', onScroll);
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f216834%2fsimple-exchange-calculator-in-java-structure-and-tests%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Marcin is a new contributor. Be nice, and check out our Code of Conduct.
Marcin is a new contributor. Be nice, and check out our Code of Conduct.
Marcin is a new contributor. Be nice, and check out our Code of Conduct.
Marcin is a new contributor. Be nice, and check out our Code of Conduct.
Thanks for contributing an answer to Code Review Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e)
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom))
StackExchange.using('gps', function() StackExchange.gps.track('embedded_signup_form.view', location: 'question_page' ); );
$window.unbind('scroll', onScroll);
;
$window.on('scroll', onScroll);
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f216834%2fsimple-exchange-calculator-in-java-structure-and-tests%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e)
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom))
StackExchange.using('gps', function() StackExchange.gps.track('embedded_signup_form.view', location: 'question_page' ); );
$window.unbind('scroll', onScroll);
;
$window.on('scroll', onScroll);
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e)
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom))
StackExchange.using('gps', function() StackExchange.gps.track('embedded_signup_form.view', location: 'question_page' ); );
$window.unbind('scroll', onScroll);
;
$window.on('scroll', onScroll);
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e)
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom))
StackExchange.using('gps', function() StackExchange.gps.track('embedded_signup_form.view', location: 'question_page' ); );
$window.unbind('scroll', onScroll);
;
$window.on('scroll', onScroll);
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown