thepolishboy
thepolishboy

Reputation: 37

java using methods with a array

Thanks for reading, I am brand new with java and I am trying to create a program.

So I have a method called public class mysystem in which i perform a loop on a array

for (int i = 0; i < tax.length; i++)

in the main method but I get errors all the time - it needs to be setted up that way as I will use that array twice once for calculating one value and second time for another value

The error I get in eclipse is

Exception in thread "main" java.lang.Error: Unresolved compilation problems:

tax cannot be resolved to a variable
tax cannot be resolved to a variable
tax cannot be resolved to a variable
tax cannot be resolved to a variable
tax cannot be resolved to a variable
tax cannot be resolved to a variable

at mysystem.taxAlone(mysystem.java:11)
at mysystem.main(mysystem.java:83)

On request the full code

 import java.util.Scanner;


 public class taxsystem{
            public static void taxAlone(double inputwage){
                    for (int i = 0; i < tax.length; i++)
                            {
                                    // Check what tax bracket the value falls in to
                                    if ((inputwage >= tax[i][0]) && (inputwage <= tax[i][1]))
                                            {
                                                    // Declare the tax variable
                                                    double taxValue;
                                                    // do the calculation - amount taxable * taxrate + Cumulative value
                                                    taxValue = ( ( (inputwage - tax[i][0]) * tax[i][2]) + tax[i][3]);
                                                    //rounding up or down!
                                                    int finalTax = (int)Math.round(taxValue);
                                                    //Print out the result!

                                                    System.out.println("You will be taxed £ "+ finalTax);
                                            }

                            }
            }

            public static void main(String[] args)
                    {

                            double[][] tax = new double[6][4];
                            // First Tax Band
                            tax[0][0] = 0;
                            tax[0][1] = 100;
                            tax[0][2] = 0;
                            tax[0][3] = 0; // 0 to start
                            // Second Tax Band
                            tax[1][0] = 101;
                            tax[1][1] = 150;
                            tax[1][2] = 0.1;
                            tax[1][3] = 0; // 0* 100 = 0
                            // Third Tax Band
                            tax[2][0] = 151;
                            tax[2][1] = 200;
                            tax[2][2] = 0.2;
                            tax[2][3] = 4.9; // 100 * 0 + 49 * 0.1 = 4.9
                            // Fourth Tax Band
                            tax[3][0] = 201;
                            tax[3][1] = 300;
                            tax[3][2] = 0.4;
                            tax[3][3] = 14.7;
                            // Fifth Tax Band
                            tax[4][0] = 301;
                            tax[4][1] = 400;
                            tax[4][2] = 0.6;
                            tax[4][3] = 54.3;
                            // Sixth Tax Band
                            tax[5][0] = 401;
                            tax[5][1] = 10000; // Dummy Value - Program is only assumed to
                                                                 // takes values up to 1000 pounds
                            tax[5][2] = 1.2;
                            tax[5][3] = 113.7;

                            // Display instructions and ask for value
                            System.out.println("Please enter the income earned to calculate tax");

                            Scanner read = new Scanner(System.in);

                            double wage = read.nextDouble();

                            taxAlone(wage);



                    }
    }

Upvotes: 0

Views: 485

Answers (2)

BitPusher
BitPusher

Reputation: 1030

The taxAlone method does not have visibility for the tax variable. Can resolve in one of two ways:

  1. Add the tax variable as a static variable, e.g. private static double[][] tax and work with just that copy
  2. Add the tax variable as an argument to the taxAlone method, e.g. public static void taxAlone(double[][] tax, double inputwage) and be sure to pass the constructed object as an argument to the method.

Upvotes: 3

Code-Apprentice
Code-Apprentice

Reputation: 83537

You are trying to use a variable named tax in the taxAlone() method. However, the only declaration for a variable named tax is in main(). taxAlone() does not know anything about variables inside of main(). You most likely need to pass the tax variable as a parameter from main to taxAlone().

Upvotes: 3

Related Questions