Question: I am not sure why my Java code is not returning the right funds or the city name. Here is the code: Traveler Class package

I am not sure why my Java code is not returning the right funds or the city name.

Here is the code:

Traveler Class

package hw1;

/**

*

* @author morgansmith

*

*/

/**

* Model of a traveler for use with city class

*/

public class Traveler {

/**

* Sympathy factor per postcard sent home

*/

public static final int SYMPATHY_FACTOR = 30;

/**

* The balance of funds available

*/

private int funds;

/**

* Nights spent at the train station

*/

private int nightsAtStation = 0;

/**

* Number of postcards sent home

*/

private int postcards;

/**

* Number of nights in a city

*/

private int numberNights;

/**

* Name of the city

*/

private String name;

/**

* Current city the traveler is in.

*/

private City currentCity = new City(name, funds);

/**

* String of a journal of where the traveler has gone.

*/

private String journal;

/**

*

* @param initialFunds

* @param initialCity

*/

public Traveler(int initialFunds, City initialCity) {

funds = initialFunds;

name = currentCity.getName();

journal = name + " (Start), ";

}

/**

* Returns City name

* @return

* city name

*/

public String getCurrentCity() {

return name;

}

/**

* Balance of funds

* @return

* funds

*/

public int getCurrentFunds() {

return funds;

}

/**

* Returns journal string

* @return

* journal

*/

public String getJournal() {

return journal;

}

/**

* Returns true if they cannot afford to send a postcard

* @return

* true if not enough funds

*/

public boolean isSOL() {

return (funds > currentCity.costToSendPostcard());

}

/**

* Returns the number of nights at the train station

* @return

* nights at station

*/

public int getTotalNightsInTrainStation() {

return nightsAtStation;

}

/**

*

* @param c

* @param numNights

*/

public void visit(City c, int numNights) {

currentCity = c;

numberNights = numNights;

journal = journal + currentCity.getName() + " (" + numberNights + "),";

funds = funds - (currentCity.maxLengthOfStay(numberNights) * currentCity.lodgingCost());

nightsAtStation = nightsAtStation + (numberNights - (currentCity.maxLengthOfStay(numberNights)));

}

/**

*

* @param howMany

*/

public void sendPostcardsHome(int howMany) {

funds = (funds - (howMany * currentCity.maxNumberOfPostcards(howMany)));

postcards = postcards + howMany;

}

/**

* Increases funds in relation to number of post cards.

*/

public void callHomeForMoney() {

funds = (funds + (postcards * SYMPATHY_FACTOR));

}

City class:

package hw1;

/**

*

* @author morgansmith

*

*/

/**

*

* Model of a city for use with traveler class

*

*/

public class City {

/**

* Cost to send a postcard from this city

*/

public static final double RELATIVE_COST_OF_POSTCARD = 0.05;

/**

* Name of the city

*/

private String name;

/**

* Cost of lodging

*/

private int lodgingCost;

/**

*

* @param givenName

* @param givenLodgingCost

*/

public City(String givenName, int givenLodgingCost) {

name = givenName;

lodgingCost = givenLodgingCost;

}

/**

* Returns the name of the city

* @return

* city name

*/

public String getName() {

return name;

}

/**

* Returns the cost of lodging

* @return

* lodging cost

*/

public int lodgingCost() {

return lodgingCost;

}

/**

* Returns the cost to send a postcard

* @return

* cost to send a postcard

*/

public int costToSendPostcard() {

double costToSend = (lodgingCost * RELATIVE_COST_OF_POSTCARD);

return ((int) Math.round(costToSend));

}

/**

* Returns the max length of stay based on funds

* @param funds

* @return

* max length of stay

*/

public int maxLengthOfStay(int funds) {

return (funds / lodgingCost);

}

/**

* Returns the max number of postcards based on funds

* @param funds

* @return

* max number of postcards

*/

public int maxNumberOfPostcards(int funds) {

double maxNumber = (funds / Math.ceil(lodgingCost * RELATIVE_COST_OF_POSTCARD));

return (int) maxNumber;

}

}

}

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!