Det kan som andra redan sagt vara bra att planera lite om problemet som skall lösas innan man börjar koda för mycket. Att skriva ner lite hur man planerar lösa det hela som kommentarer i källkodsfilen brukar fungera fint. Kommentarerna kan du sedan använda som stomme när du bygger ditt program.
Kanske något som t.ex.
public class Skatteuppgift
{
public static void main( String[] args )
{
// Problem som skall lösas:
// - Användare skall via frågor mata in inkomstuppgifter och
// programmet skall generera resultat i form av en skatteuppgift
//
// Lösning 1:
// 1. Fråga användare efter inkomst av tjänst
// 2. Kontrollera om inkomst är lägre än grundavdrag
// - Om så är fallet,
// Sätt statlig skatt 0
// Sätt kommunal skatt till 0
// Hoppa till resultatpresentation
// 3. Fråga användare efter skattetabell
// 4. Kontrollera om inkomst är högre än X basbelopp
// - Om så är fallet, generera Statlig skatt på överskjutande belopp
// 5. Beräkna Kommunal skatt via skattetabell på beskattningsbar inkomst
// 6. Presentera resultat och fråga om användare vill göra ny beräkning
// - Om ny beräkning önskas, hoppa till 1
// 7. Avsluta programmet
}
}
Sedan är det bara att fylla på med kod som i steg efter steg gör det du vill. Det kan också vara bekvämt att bryta ut delar av koden till egna funktioner allt eftersom du skriver dem för att göra det enklare att få en överblick. Om man skriver allt i en lång följd i en funktion är det lätt att det ser onödigt komplicerat ut. Dessutom kan man återanvända kod utan att upprepa den om man lägger den i egna funktioner vilket även göre det enklare att fixa buggar då man bara behöver ändra på ett ställe.
Om man gör det lite snabbt för ovanstående exempel kan det bli något som t.ex.
public static void main( String[] args )
{
// Problem som skall lösas:
// - Användare skall via frågor mata in inkomstuppgifter och
// programmet skall generera resultat i form av en skatteuppgift
//
// Lösning 1:
// 1. Fråga användare efter inkomst av tjänst
double income = askForIncome();
// 2. Kontrollera om inkomst är lägre än grundavdrag
// - Om så är fallet,
// Sätt statlig skatt 0
// Sätt kommunal skatt till 0
// Hoppa till resultatpresentation
if ( isLowerThanTaxLimit( income ) ) {
//
}
else {
}
// 3. Fråga användare efter skattetabell
int taxtTable = askForTaxTable();
// 4. Kontrollera om inkomst är högre än X basbelopp
// - Om så är fallet, generera Statlig skatt på överskjutande belopp
boolean needStateTax = needStateTax( income );
double stateTax = 0;
if ( needStateTax ) {
}
else {
}
// 5. Beräkna Kommunal skatt via skattetabell på beskattningsbar inkomst
double localTax = calculateLocalTax( income );
// 6. Presentera resultat och fråga om användare vill göra ny beräkning
// - Om ny beräkning önskas, hoppa till 1
boolean doItAgain = presentResultAndAskForMoreCalulations( localTax, stateTax );
...
// 7. Avsluta programmet
}
public static double askForIncome()
{
return 0;
}
public static boolean isLowerThanTaxLimit( double income )
{
return false;
}
public static int askForTaxTable()
{
return 0;
}
public static boolean needStateTax( double income )
{
return false;
}
public static double calculateLocalTax( double income )
{
return 0;
}
public static double calculateStateTax( double income )
{
return 0;
}
public static boolean presentResultAndAskForMoreCalulations( double localTax, double stateTax )
{
return false;
}
Fortfarande en del jobb kvar som t.ex. att fixa till alla beräkningar och funktionsimplementationer, att fixa till att allt körs om igen om användare önskar, mm. Dock är det mesta små delproblem som man kan lösa ett i sänder.
Just det här att dela upp problem i delproblem är mycket av vad programmering handlar om, vare sig det är enkla små uppgifter eller komplexa stora system som skall byggas.
Hoppas jag hjälpte till lite och lycka till.