Feedback5CreditCardAccount.java
Feedback5CreditCardAccount.java
import
java
.
text
.
DecimalFormat
;
/**
* CreditCardAccount
*/
public
class
Feedback5CreditCardAccount
{
private
double
currentBalance
;
private
double
rate
;
private
double
percent
;
/**
*
@param
balance
*
@param
interest
*/
public
Feedback5CreditCardAccount
(
double
balance
,
double
interest
)
{
currentBalance
=
balance
;
rate
=
interest
;
percent
=
0
;
}
/**
*
@param
balance
*
@param
interest
*
@param
deduct
*/
public
Feedback5CreditCardAccount
(
double
balance
,
double
interest
,
double
deduct
)
{
currentBalance
=
balance
;
rate
=
interest
;
percent
=
deduct
;
}
/**
* get percent
*
@return
percent deductions
*/
public
double
getPercent
(){
return
percent
;
}
/**
* minimum pay
*
@return
minimum pay
*/
private
double
minimumPay
()
{
final
double
LOW
=
50.0
;
final
double
HIGH
=
0.05
;
final
double
LIM
=
1000.0
;
double
minPay
;
if
(
currentBalance
<
LIM
)
minPay
=
LOW
;
else
minPay
=
(
HIGH
*
currentBalance
);
return
minPay
;
}
/**
* make pay
*/
private
void
makePay
()
{
double
interest
;
double
pay
;
double
min
;
System
.
out
.
printf
(
"%12.2f"
,
currentBalance
);
interest
=
(
currentBalance
*
(
rate
/
12
/
100
));
System
.
out
.
printf
(
"%13.2f"
,
interest
);
currentBalance
=
currentBalance
+
interest
;
System
.
out
.
printf
(
"%15.2f"
,
currentBalance
);
pay
=
this
.
currentBalance
*
this
.
percent
/
100
;
min
=
minimumPay
();
if
(
pay
<
min
)
pay
=
min
;
if
(
pay
>
currentBalance
)
pay
=
currentBalance
;
System
.
out
.
printf
(
"%12.2f"
,
pay
);
currentBalance
=
currentBalance
-
pay
;
System
.
out
.
printf
(
"%12.2f\n"
,
currentBalance
);
}
/**
* pay off
*
@return
number of months
*/
public
int
payOff
()
{
int
month
=
0
;
System
.
out
.
println
();
if
(
percent
==
0
)
System
.
out
.
println
(
"Results when paying minimum required payment per month"
);
else
System
.
out
.
println
(
"Results when paying "
+
(
int
)
this
.
getPercent
()
+
"% of the balance per month"
);
System
.
out
.
println
(
"---------------------------------------------------------------------"
);
System
.
out
.
println
(
" Initial Month's Balance End "
);
System
.
out
.
println
(
"Month Balance Interest w/Interest Payment Balance"
);
System
.
out
.
println
(
"---------------------------------------------------------------------"
);
while
(
this
.
currentBalance
>
0
)
{
month
++
;
System
.
out
.
printf
(
"%5d"
,
month
);
this
.
makePay
();
}
return
month
;
}
}