Java program för att beräkna kompoundering intresse
över tid (subtrahera 30% per månad för skatter.
Kör det här programmet från kommandoraden.
Användaren uppmanas att ange antalet år som de vill investera,
belopp som de vill sätta in varje månad och det ursprungliga beloppet.
Resultat skickas till skärmen och text fil.
Distribueras under GNU GPL: www.gnu.org
import javax.swing.JOptionPane;
import java.io.*;
import java.text.DecimalFormat;
klass Compound9
{/ / Start klass Compound9
Deklarera variabler
flyta mike, mike2, mike3, mike4;
float intresse. Räntebeloppet
float belopp, amount2; Ursprungligt belopp investerat
dubbel i = 1;
float månader, months2; Antal månader pengar kommer att vara
deponeras/investerat; räknat från år
float MonthlyAmount; Beloppet deponeras varje månad
float initial, initial2; Första insättning
flyta, hotel2, hotel3;
int n;
Sträng linje;
Sträng bravo;
Sträng charlie;
int delta, redhat;
int echo;
int foxtrot;
Metoden att be användaren att ange antal år
Metoden returnerar float
float NumberYears() kastar java.io.IOException
{/ / Start NumberYears metod
int delta = 0;
float Hotell; Antal år pengar kommer att vara deponerade/investerat
Hotell = 0;
Sträng alpha;
göra {
försök {
Skriva ut mata in fråga till skärm
System.out.println ("\nHow många år vill du investera?");
Använd standard Indataströmmen i klassen System, mata tangentbordsinmatning
till variabel "isr" av InputStreamReader klass
InputStreamReader isr = nya InputStreamReader(System.in);
Feed information från variabeln "isr" till variabel "br" för BufferedReader klass
BufferedReader br = nya BufferedReader(isr);
Läst buffrade läsaren "br" i strängvariabel "alpha"
alpha = br.readLine();
Kastade strängen "alfa" i en flottör och returnera resultat
huvuddelen av programmet
Hotell = (Float.parseFloat(alpha));
delta ++; Increment göra-medan flaggan variabel om ett nummer anges
} / / end try loop
fånga (IOException golf) {/ / starta fångst för IOException
System.out.println ("IO fel - fel fångas:" + golf.getMessage());
golf.printStackTrace();
} / / End fånga IO undantag
Fånga undantag om skrivelse anges
fånga (NumberFormatException echo) {
System.out.println ("du inte angav ett nummer.");
System.out.println ("fel fångas; du angav: "+ echo.getMessage());
echo.printStackTrace();
När programmet når denna punkt, delta är fortfarande 0
Därför kommer det att göra loopen igen
} / / End fångst
} / / End do
medan (delta == 0);
Returnerar värdet i hotel till huvudprogrammet
returnera Hotell;
} / / End NumberYears metod
Metod för att få beloppet deponeras varje månad från användaren
float MonthlyDeposit() kastar java.io.IOException
{/ / Start MonthlyDeposit metod
göra
{/ / Start slinga
försök
{/ / Börja prova avsnitt
Skriva ut mata in fråga till skärm
System.out.println ("\nHow mycket du vill sätta in varje månad?");
Använd standard Indataströmmen i klassen System, mata tangentbordsinmatning
till variabel "isr" av InputStreamReader klass
InputStreamReader isr = nya InputStreamReader(System.in);
Feed information från variabeln "isr" till variabel "br" för BufferedReader klass
BufferedReader br = nya BufferedReader(isr);
Läst buffrade läsaren "br" i strängen variabel "bravo"
Bravo = br.readLine();
Kastade strängen "bravo" i en flottör
hotel2 = Float.parseFloat(bravo);
Om undantagsfel på raden före, foxtrot ++ hoppas över
Foxtrot ++;
} / / End try avsnitt
fånga (IOException xray) {
System.out.println ("IO fel - fel fångas:" + xray.getMessage());
xray.printStackTrace();
} / / End IOException
Fånga undantag om skrivelse anges
fånga (NumberFormatException hk) {
System.out.println ("du inte angav ett nummer.");
System.out.println ("fel fångas; du angav: "+ hp.getMessage());
hp.printStackTrace();
Foxtrot är fortfarande noll på denna punkt
} / / End fångst för NumberFormatException
} / / End loop
Flagga som bestämmer när göra-medan loopen avslutas
medan (foxtrot == 0);
återvända hotel2;
} / / End MonthlyDeposit metod
InitialAmount metod blir det ursprungliga investerade beloppet
float InitialAmount() kastar java.io.IOException {
göra {/ / Start slinga
försök {
System.out.println ("\nHow mycket är den ursprungliga investeringen?");
Mata in InputStreamReader "isr" på tangentbordet
InputStreamReader isr = nya InputStreamReader(System.in);
Foder InputStreamReader i BufferedReader
BufferedReader br = nya BufferedReader(isr);
Läsa BufferedReader i variabeln "charlie"
Charlie = br.readLine();
Kastade strängen "charlie" i float och sätta in variabeln "hotel3"
hotel3 = (Float.parseFloat(charlie));
Increment göra-medan flaggan variabel om ett nummer anges
redhat ++;
} / / End try avsnitt
fånga (IOException redhat2) {
System.out.println ("IOError - fel fångas:" + redhat2.getMessage());
redhat2.printStackTrace();
} / / End IO fånga uttalande
fånga (NumberFormatException suse) {
System.out.println ("du inte angav ett antal");
suse.getMessage();
suse.printStackTrace();
} / / End NumberFormat fångst
} / / End loop
medan (redhat == 0);
returnera hotel3;
} / / End InitialAmount metod
NegativeCheck-metoden kontrollerar för ett negativt tal
NegativeCheck(float kilo) {float
om (kilo < 0) {
System.out.println ("Skriv in ett positivt tal.");
Mike = 0;
} / / End om uttalande
annat {
Mike = 1;
}
returnera mike;
} / / End NegativeCheck
flyta months() / / metod för att beräkna antal månader
{
månader = år * 12;
System.out.println ("antal månader är:" + månader);
returnera månader.
}
Metoden att beräkna ränta, skriva ut den till den
på skärmen och skriva den till en fil
float beräkna (float months3, float initial2)
{
försök / / slinga för att försöka skriva till en fil
{
Fil temp = nya File("Compound9.txt"); Skapa ny fil
FileWriter fw = nya FileWriter(temp); Skapa ny FileWriter
BufferedWriter ut = nya BufferedWriter(fw); / / skapa ny BufferedWriter
Passera initial2 in variabeln "belopp"
summa = initial2;
Beräkna ränta för den första månaden
Beräkna månatliga intresse (.08/12)
8% årlig tillväxt (historiska avg för bestånd)
ränta = (float) (belopp *. 00667);
20% skatt tas ut
ränta = (float) (intresse *. 8);
Lades till att köra totalt
summa = (belopp + ränta);
Formatera utdata till 2 decimaler och sätta ett kommatecken i (amerikanska stil)
DecimalFormat roundTwo = ny DecimalFormat("###,###,###,###.##");
Information placeras i objektet String "line" skickas till fil
rad = ("Belopp efter" + i + "månader är $" + roundTwo.format(amount) + "\n");
Information som skickas till skärmen
System.out.println ("Belopp efter" + i + "månader är $" + roundTwo.format(amount));
Att skriva strängen "line" fil
out.write(Line);
Obs: Anledningen till att den första månaden intresse är skild från huvudloop är
eftersom jag ville se till att har den första månadens ränta endast beräknats
för den ursprungliga depositionen, inte den första insättningen plus deposition för den första månaden.
Loop beräknas från månad 2 framåt
Start för loop att bestämma kompoundering intresse. begränsas av antalet månader
för (jag = 2; jag < = months3; i ++)
{
Lägg till månatlig insättning på totala
summa = (belopp + MonthlyAmount);
Beräkna månatliga intresse (.08/12)
8% årlig tillväxt (historiska avg för bestånd)
ränta = (float) (belopp *. 00667);
20% skatt tas ut
ränta = (float) (intresse *. 8);
Lades till att köra totalt
summa = (belopp + ränta);
Formatera utdata till 2 decimaler och sätta ett kommatecken i (amerikanska stil)
DecimalFormat roundTwo = ny DecimalFormat("###,###,###,###.##");
Information placeras i objektet String "line" skickas till fil
rad = ("Belopp efter" + i + "månader är $" + roundTwo.format(amount) + "\n");
Information som skickas till skärmen
System.out.println ("Belopp efter" + i + "månader är $" + roundTwo.format(amount));
Att skriva strängen "line" fil
out.write(Line);
} / / End for-loop
out.Close(); Nära textfil
} / / End try loop
fånga (undantag e) {/ / fånga undantag om kan inte skriva filen
System.out.println ("ett fel har inträffat:" + e.toString());
} / / End fångst
tillbaka beloppet;
} / / End beräkna metod
Starta huvudsakliga metod, tala om för programmet att kasta IO undantag
public static void main (String [] argument) kastar java.io.IOException
{
Be användaren att svara på kommande frågor med dialogen låda
() JOptionPane.showMessageDialog
null, "var god svara på följande frågor.");
Skapa nya handtag kallas "foxtrot" av typen "Compound9"
Koppla handtag till nya "Compound9" objekt
Compound9 foxtrot = nya Compound9();
Få antal år
göra {
returnera variabel "hotel" förs in variabeln "år"
Foxtrot.years = foxtrot. NumberYears();
passera variabel "år" i NegativeCheck metod
resultatet går in i "mike2"
Foxtrot.mike2 = foxtrot. NegativeCheck(foxtrot.years);
} / / End do
om "mike" är lika med 0, är användaren bad om information igen
While(foxtrot.mike2 == 0);
System.out.println ("antalet år som du angett är:" + foxtrot.years);
Får beloppet per månad deponeras
göra {
återvändande variabeln "hotel2" skickas till variabeln "MonthlyAmount"
Foxtrot. MonthlyAmount = foxtrot. MonthlyDeposit();
passera variabeln "MonthlyAmount" i NegativeCheck metod
resultatet går in i "mike3"
Foxtrot.mike3 = foxtrot. NegativeCheck (foxtrot. MonthlyAmount);
} / / End loop
om mike3 är 0, är användaren bad om input igen
medan (foxtrot.mike3 == 0);
System.out.println ("beloppet per månad anges är:" + foxtrot. MonthlyAmount);
Får första beloppet deponeras
göra {
Returnera variabel "redhat" och placera i variabeln "ursprungliga"
Foxtrot.Initial = foxtrot. InitialAmount();
Passera "ursprungliga" in i NegativeCheck metod och tillbaka resultatet till "mike4"
Foxtrot.mike4 = foxtrot. NegativeCheck(foxtrot.initial);
} / / "mike4" är 0, användaren kommer bli tillfrågad om input
medan (foxtrot.mike4 == 0);
System.out.println ("det ursprungliga budgetbeloppet är:" + foxtrot.initial);
Månader-metoden för att fastställa antalet månader
Foxtrot.months2 = foxtrot.months();
Samtal beräkna metod för att beräkna ränta
Foxtrot.amount2 = foxtrot.calculate (foxtrot.months2, foxtrot.initial);
Skapa "roundTwo" objekt i DecimalFormat klass formateras korrekt utdata
DecimalFormat roundTwo = ny DecimalFormat("###,###,###,###.##");
Visa resultat för användare på kommandoraden
System.out.println ("\nThe initialt belopp på $" + foxtrot.initial + "efter lägga till $" + foxtrot. MonthlyAmount + "per månad");
System.out.println ("för" + foxtrot.years + "år och växer med 8% per år (med 20% tas bort för skatter)");
System.out.println ("blir >>>>>>>> $" + roundTwo.format(foxtrot.amount2) + "<<<<<<<<<" + "\n");
System.out.println ("detta har skrivits till en textfil med namnet: compound9.txt.\n");
Visa resultat för användaren i dialogrutan
() JOptionPane.showMessageDialog
null, "Ursprungligt belopp mängden $" + foxtrot.initial + "efter lägga till $" + foxtrot. MonthlyAmount + "per månad för" + foxtrot.years + "år \n och växer med 8% per år (med 20% tas bort för skatter) blir >> $" + roundTwo.format(foxtrot.amount2) + "\n detta har skrivits till en textfil kallas: compound9.txt.");
System.Exit (0);
} / / Nära Main () metod
} / / Nära klass compound9