Results 1 to 8 of 8
  1. #1
    e_as're is offline Member
    Join Date
    Jul 2007
    Posts
    7
    Rep Power
    0

    Default help with an exercise calcuting tax

    i was hoping to get some help on an exercise that we have been given that asks to calculate tax. i am an absolute novice and any help would be appreciated.

    we're asked to calculate tax for the 2007 period on a given income and the percentage of the income the tax represents. income less than $38000 is taxed at 19.5%, from $38000 to $60000 at 33% and over $60000 at 39%. However, earned income less than $9500 is given a rebate of 4.5% but this rebate is reduced by 1.5% of income between $9,500 and $38,000.

    Additionally there is the repayment of a student loan. Although called a “loan” it is not an ordinary loan as it doesn’t ever have to be repaid, rather an agreement to pay additional tax of 10% on income over $17,160 until you have met your obligation.

    Your program should show the tax both with and without a student loan in exactly the format of the following example:

    Type in total income to nearest dollar: 35500

    On an income of: $35500
    Income tax is: $6923
    With rebate of: $38
    Giving total tax of: $6885
    Which is: 19% of income

    With a student loan:
    Loan repayment is an additional: $1834
    For total "tax" of: $8719
    Which is: 25% of income

    Press any key to continue . . .

    we are given some variables such as:

    final double LOW_TAX_RATE = 0.195;
    final double MID_TAX_RATE = 0.33;
    final double TOP_TAX_RATE = 0.39;
    final double REBATE_RATE = 0.045;
    final double PENALTY_RATE = 0.015;
    final double LOAN_RATE = 0.1;

    This kind of program will be easier to write when we have gone further and learned about conditional statements. For now you must write this program without using any conditional statements at all. Rather, you need to make use of the methods Math.max() and Math.min().

    For example, the amount of income less than $38000 may be calculated as:

    Math.min(income,38000)
    the amount of income over $60000 may be calculated as:
    Math.max(0,income-60000)

    Note that the amount of income between, say, $38,000 and $60,000 is the amount of income less than $60,000 that is greater than $38,000.

    The detailed instructions ask that you do arithmetic with double variables and values but print out the answers to the nearest dollar. Use the method Math.round()to convert a double value to the nearest whole dollar value.

    we havent as yet covered if and else statements and are only up to strings

  2. #2
    hardwired's Avatar
    hardwired is offline Senior Member
    Join Date
    Jul 2007
    Posts
    1,576
    Rep Power
    8

    Default

    Java Code:
    import java.util.Scanner;
    
    public class TaxCalculation {
        // Member variable constants.
        final double LOW_TAX_RATE = 0.195;
        final double MID_TAX_RATE = 0.33;
        final double TOP_TAX_RATE = 0.39;
        final double REBATE_RATE = 0.045;
        final double PENALTY_RATE = 0.015;
        final double LOAN_RATE = 0.1;
    
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            boolean goAgain = true;
            while(goAgain) {
                System.out.print("Type in total income to nearest dollar: ");
                String line = scanner.nextLine().trim();
                int income = Integer.parseInt(line);
                int under38 = Math.min(income, 38000);
                System.out.println("income less than 38,000 = " + under38);
                int over38 = Math.max(0, income - 38000);
                //System.out.printf("over38 = %d%n", over38);
                int over60 = Math.max(0, income - 60000);
                int between = over38 - over60;
                System.out.println("income between 38000 and 60000 = " + between);
                System.out.println("income over 60000 = " + over60);
    
                // Now you can figure the taxes...
                
                System.out.println("More? \"y\" or \"n\"");
                    goAgain = scanner.nextLine().equals("y");
            }
        }
    }

  3. #3
    e_as're is offline Member
    Join Date
    Jul 2007
    Posts
    7
    Rep Power
    0

    Default

    thanx hardwired for doing that.

    we havent covered boolean expressions or scanners. how would i get past this??

    cheers

  4. #4
    hardwired's Avatar
    hardwired is offline Senior Member
    Join Date
    Jul 2007
    Posts
    1,576
    Rep Power
    8

    Default

    Depends on your class/teacher. How do you get user input from the console in class? Maybe IO, ie, using readers. That's the way you would use. Have you learned while loops? If not maybe it's too early to do the loop part.

  5. #5
    e_as're is offline Member
    Join Date
    Jul 2007
    Posts
    7
    Rep Power
    0

    Default

    no, havent done while loops. we read input using a custom keyboard class file that we save into the source directory. eg. when using a String;

    String x = Keyboard.readInput();
    double y = Double.parseDouble(x);

    and we use equations in println statements eg:

    System.out.println(x + "Hello" + y);

    thanks

  6. #6
    e_as're is offline Member
    Join Date
    Jul 2007
    Posts
    7
    Rep Power
    0

    Default

    this is what ive got so far and its not very good:

    public class Q2Program {
    public void start(){

    // User types in income to nearest dollar and program
    // responds with tax owing, and tax as % of income
    // Ignore the under $9,880 rebate
    // Assume all income counts for the "under $38,000" rebate
    // Show with, and without, student loan owing for the entire year
    // Use double arithmetic for calculations, but..
    // Display money amounts rounded to nearest dollar
    // Make use of the following constants for the tax rates

    final double LOW_TAX_RATE = 0.195;
    final double MID_TAX_RATE = 0.33;
    final double TOP_TAX_RATE = 0.39;
    final double REBATE_RATE = 0.045;
    final double PENALTY_RATE = 0.015;
    final double LOAN_RATE = 0.1;

    /* Note that a professional program would also use constants for the
    various income levels, but that would make this exercise a bit
    cumbersome for beginners */

    // Get income from the user
    System.out.print("Type in total income to nearest dollar: ");
    String income = Keyboard.readInput();

    double income<38000 = Math.min(income, 38000);
    System.out.print("On a income of: $" + income<38000);

    double income>38000 = Math.max(0,income - 38000);
    System.out.print("On a income of: $" + income>38000);

    double income>38000<60000 = ?????????????? Math.max(0, income, - 38000, 60000);
    System.out.print("On a income of: $" + income>38000<60000);

    double income>60000 = Math.max(0, income - 60000);
    System.out.print("On a income of: $" + income>60000);


    // Calculate income tax

    // find tax on income up to $38,000 at 19.5%
    double income<38000Tax = income<38000 * LOW_TAX_RATE;
    System.out.print(" Income tax is: $" + income<38000Tax);

    // find tax on income between $38,000 and $60,000 at 33%
    double income>38000<60000Tax = income>38000<60000 * MID_TAX_RATE;
    System.out.print(" Income tax is: $" + income>38000<60000Tax);

    // find tax on income over $60,000 at 39%
    double income>60000Tax = income>60000 * TOP_TAX_RATE;
    System.out.print(" Income tax is: $" + income>60000Tax);

    // Calculate tax rebate
    // find rebate on income up to $9500 at 4.5%
    double taxRebate = 9500 * REBATE_RATE;

    // find penalty on rebate for income between $9500 and $38,000 at 1.5%
    double penaltyRebate = (income - 9500) * PENALTY_RATE;

    // calculate net rebate
    double netRebate = (taxRebate - penaltyRebate);

    // calculate total income tax
    double totalIncomeTax<38000 = (income<38000 - income<38000Tax);
    double totalIncomeTax>38000<60000 = (income>38000<60000 - income>38000<60000Tax);
    double totalIncomeTax>60000 = (income>60000 - income>60000Tax);

    // Calculate percentage of income
    double percentageOfIncome<38000 = ((income<38000 - totalIncomeTax<38000) * 100);
    double percentageOfIncome>38000<60000 = ((income>38000<60000 - totalIncomeTax>38000<60000) * 100);
    double percentageOfIncome>60000 = ((income>60000 - totalIncomeTax>60000) * 100);

    // Calculate student loan tax
    double studentLoanTax = (income - 17160) * LOAN_RATE;

    // Calculate total taxes, with and without loan;
    double totalTax = (?????????????income tax - netRebate);
    double totalTaxInclStudentLoan = (totalTax + studentLoanTax);

    // Display tax owing and rates
    System.out.print(" With rebate of: " + netRebate);
    System.out.print(" Giving total tax of: " + totalTax);
    System.out.print(" Which is: " + percentageOfIncome<38000" of income");
    System.out.print(" Which is: " + percentageOfIncome>38000<60000" of income");
    System.out.print(" Which is: " + percentageOfIncome>60000" of income");
    System.out.print("With a student loan:");
    System.out.print(" Loan repayment is an additional: " + studentLoanTax);
    System.out.print(" For total \"tax\" of: " + totalTax);
    System.out.print(" Which is: " + percentageOfIncome<38000 + " of income");
    System.out.print(" Which is: " + percentageOfIncome>38000<60000 + " of income");
    System.out.print(" Which is: " + percentageOfIncome>60000 + " of income");

    //Use the method Math.round()to convert a double value to the nearest whole dollar value.

    }

    }

  7. #7
    hardwired's Avatar
    hardwired is offline Senior Member
    Join Date
    Jul 2007
    Posts
    1,576
    Rep Power
    8

    Default

    Java Code:
    import java.util.Scanner;
    
    public class Q2P {
        public void start(){
            // User types in income to nearest dollar and program
            // responds with tax owing, and tax as % of income
            // Ignore the under $9,880 rebate
            // Assume all income counts for the "under $38,000" rebate
            // Show with, and without, student loan owing for the entire year
            // Use double arithmetic for calculations, but..
            // Display money amounts rounded to nearest dollar
            // Make use of the following constants for the tax rates
    
            final double LOW_TAX_RATE = 0.195;
            final double MID_TAX_RATE = 0.33;
            final double TOP_TAX_RATE = 0.39;
            final double REBATE_RATE = 0.045;
            final double PENALTY_RATE = 0.015;
            final double LOAN_RATE = 0.1;
    
            /* Note that a professional program would also use constants for the
               various income levels, but that would make this exercise a bit
               cumbersome for beginners */
    
            //Scanner scanner = new Scanner(System.in);
            // Get income from the user
            System.out.print("Type in total income to nearest dollar: ");
            String in = Keyboard.readInput();
                        //scanner.nextLine();
            double income = Double.parseDouble(in);
    
            double under38000 = Math.min(income, 38000);
            System.out.println("On a income of: $" + Math.round(under38000));
    
            double over38000 = Math.max(0,income - 38000);
            System.out.println("On a income of: $" + Math.round(over38000));
    
            double inBetween = over38000 - Math.max(0, income - 60000);
            System.out.println("On a income of: $" + Math.round(inBetween));
    
            double over60000 = Math.max(0, income - 60000);
            System.out.println("On a income of: $" + Math.round(over60000));
    
    
            // Calculate income tax
            // find tax on income up to $38,000 at 19.5%
            double under38000Tax = under38000 * LOW_TAX_RATE;
            System.out.println(" Income tax is: $" + Math.round(under38000Tax));
    
            // find tax on income between $38,000 and $60,000 at 33%
            double inBetweenTax = inBetween * MID_TAX_RATE;
            System.out.println(" Income tax is: $" + Math.round(inBetweenTax));
    
            // find tax on income over $60,000 at 39%
            double over60000Tax = over60000 * TOP_TAX_RATE;
            System.out.println(" Income tax is: $" + Math.round(over60000Tax));
    
            // Calculate tax rebate
            // find rebate on income up to $9500 at 4.5%
            double taxRebate = 9500 * REBATE_RATE;
    
            // find penalty on rebate for income between $9500 and $38,000 at 1.5%
            // income between $9500 and $38,000 = incomeOver9500 - incomeOver38000
            double over9500 =  Math.max(0, income - 9500);
            System.out.printf("income = %.0f  over9500 = %.0f  over38000 = %.0f%n" +
                              "income between $9500 and $38,000 = %.0f%n",
                               income, over9500, over38000, over9500 - over38000);
            double penaltyRebate = (over9500 - over38000) * PENALTY_RATE;
    
            // calculate net rebate
            double netRebate = (taxRebate - penaltyRebate);
    
            // calculate total income tax
            double totalUnder38000Tax = (under38000 - under38000Tax);
            double totalInBetweenTax = (inBetween - inBetweenTax);
            double totalOver60000Tax = (over60000 - over60000Tax);
    
            // Calculate percentage of income
            double percentUnder38000 = ((under38000 - totalUnder38000Tax) * 100);
            double percentInBetween = ((inBetween - totalInBetweenTax) * 100);
            double percentOver60000 = ((over60000 - totalOver60000Tax) * 100);
    
            // Calculate student loan tax
            double studentLoanTax = (income - 17160) * LOAN_RATE;
    
            // Calculate total taxes, with and without loan;
            double totalTax = (totalUnder38000Tax + totalInBetweenTax +
                               totalOver60000Tax - netRebate);
            double totalTaxInclStudentLoan = (totalTax + studentLoanTax);
    
            // Display tax owing and rates
            // Use the method Math.round() to convert a double value
            // to the nearest whole dollar value.
            System.out.println(" With rebate of: " + Math.round(netRebate));
            System.out.println(" Giving total tax of: " + Math.round(totalTax));
            System.out.println(" Which is: " + Math.round(percentUnder38000) + " of income");
            System.out.println(" Which is: " + Math.round(percentInBetween) + " of income");
            System.out.println(" Which is: " + Math.round(percentOver60000) + " of income");
            System.out.println("With a student loan:");
            System.out.println(" Loan repayment is an additional: " +
                                 Math.round(studentLoanTax));
        }
    
        public static void main(String[] args) { new Q2P().start(); }
    }

  8. #8
    e_as're is offline Member
    Join Date
    Jul 2007
    Posts
    7
    Rep Power
    0

Similar Threads

  1. exercise of recursive method
    By amexudo in forum New To Java
    Replies: 2
    Last Post: 03-09-2008, 05:55 PM
  2. Prob with an exercise
    By jhetfield18 in forum New To Java
    Replies: 4
    Last Post: 02-15-2008, 06:11 PM
  3. Problems with Calendar exercise
    By Jude in forum New To Java
    Replies: 1
    Last Post: 11-20-2007, 07:30 PM
  4. I/O exercise
    By Feldom in forum New To Java
    Replies: 1
    Last Post: 10-28-2007, 04:48 PM
  5. help with exercise
    By e_as're in forum New To Java
    Replies: 3
    Last Post: 09-25-2007, 10:14 AM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •