I'm a real Noob to programming & am taking a class of intro to Java.
I keep getting a variable not initializing error on the nightsA line calculation.
I'm going to warn once again I'm a NOOB to this, so any help is appreciated.

import java.util.Scanner;

public class SunnyDaze

{

    public static void main (String[] args)
    {
        String inputSuite;
        int nightsA;
        int nightsB;
        int nightsC;
        int suiteA = 150;
        int suiteB = 175;
        int suiteC = 200;
        double stateTax = 0.045;
        double federalTax = 0.05;
        double discount = 0.1;
        double suiteApricenoDCst;
        double suiteApricenoDCft;
        double suiteApricenoDC;
        double suiteADC;
        double suiteApriceDCst;
        double suiteApriceDCft;
        double suiteApriceDC;
        double suiteBpricenoDCst;
        double suiteBpricenoDCft;
        double suiteBpricenoDC;
        double suiteBDC;
        double suiteBpriceDCst;
        double suiteBpriceDCft;
        double suiteBpriceDC;
        double suiteCpricenoDCst;
        double suiteCpricenoDCft;
        double suiteCpricenoDC;
        double suiteCDC;
        double suiteCpriceDCst;
        double suiteCpriceDCft;
        double suiteCpriceDC;        


        Scanner keyboard = new Scanner(System.in);

        System.out.println("Which is the letter of the suite you want to stay at? (A, B, or C?)");
        inputSuite = keyboard.nextLine();

        if (inputSuite.equalsIgnoreCase("A"))
        {
            System.out.println("How many nights do you plan on staying at the R & R?");
            nightsA = keyboard.nextInt();
        }
        else
        {
            System.out.println("Try one of our other suites.  They might suit you better. :)");
        }
            if (nightsA <= 5  || nightsA >=1)
            {
                suiteApricenoDCst = (suiteA * stateTax);
                suiteApricenoDCft = (suiteA * federalTax);
                suiteApricenoDC = (suiteA + suiteApricenoDCst + suiteApricenoDCft * nightsA);
                System.out.println("Your price for your stay is " + suiteApricenoDC);
            }
            else
            if (nightsA >  5)
            {
                suiteADC = (suiteA * discount);
                suiteApriceDCst = (suiteADC * stateTax);
                suiteApriceDCft = (suiteADC * federalTax);
                suiteApriceDC = (suiteADC + suiteApricenoDCst + suiteApricenoDCft * nightsA);
                System.out.println("Your price for your stay is " + suiteApricenoDC);
            }
            else
            {
                System.out.println("ERROR!!!");
            }                 

        if (inputSuite.equalsIgnoreCase("B"))
        {
            System.out.println("How many nights do you plan on staying at the Pair O'Dice?");
            nightsB = keyboard.nextInt();
        }
        else
        {
            System.out.println("If this doesn't suit you, then try another suite, plz");
        }
            if (nightsB >= 1 || nightsB <= 5)
            {
                suiteApricenoDCst = (suiteB * stateTax);
                suiteApricenoDCft = (suiteB * federalTax);
                suiteApricenoDC = (suiteB + suiteBpricenoDCst + suiteBpricenoDCft * nightsB);
                System.out.println("Your price for your stay is " + suiteBpricenoDC);
            }
            else
            if (nightsB > 5)
            {
                suiteBDC = (suiteB * discount);
                suiteBpriceDCst = (suiteBDC * stateTax);
                suiteBpriceDCft = (suiteBDC * federalTax);
                suiteBpriceDC = (suiteBDC + suiteBpricenoDCst + suiteBpricenoDCft * nightsB);
                System.out.println("Your price for your stay is " + suiteBpricenoDC);
            }

        if (inputSuite.equalsIgnoreCase("C"))
        {
        System.out.println("How many nights do you plan to stay in our luxurous Luckheart Manor?");
        nightsC = keyboard.nextInt();
        }
        else
        {
        System.out.print("I don't know what else to do for you, sorry...");
        }
            if (nightsC >= 1 || nightsC <= 5)
            {
                suiteCpricenoDCst = (suiteC * stateTax);
                suiteCpricenoDCft = (suiteC * federalTax);
                suiteCpricenoDC = (suiteC + suiteCpricenoDCst + suiteCpricenoDCft * nightsC);
                System.out.println("Your price for your stay is " + suiteCpricenoDC);
            }
            else
            if (nightsC >= 5)
            {
                suiteCDC = (suiteC * discount);
                suiteCpriceDCst = (suiteCDC * stateTax);
                suiteCpriceDCft = (suiteCDC * federalTax);
                suiteCpriceDC = (suiteCDC + suiteCpricenoDCst + suiteCpricenoDCft * nightsC);
                System.out.println("Your price for your stay is " + suiteApricenoDC);
            }
    }
}

Recommended Answers

All 11 Replies

You MUST explicitly initialise all local variables in a method before reading them for the first time.
You don't do that, so you get an error.

You MUST explicitly initialise all local variables in a method before reading them for the first time.
You don't do that, so you get an error.

Thanks for replying, as I stated in my post, I'm a NOOB at this & I posted this to see if anybody could give me a suggestion on how to fix this error.

Member Avatar for Dukane

He did give you a suggestion on how to fix the error. Do you understand his recommendation?

He did give you a suggestion on how to fix the error. Do you understand his recommendation?

No, I'm a NOOB!!!

Sry, bout this...

Thanks for replying, as I stated in my post, I'm a NOOB at this & I posted this to see if anybody could give me a suggestion on how to fix this error.

No, judging from this post, you came here for someone to give you the code to complete and functional program. Well, I'm sorry (no I'm not), but that is not how it works. Read jwenting's post again, consider his recommendation, study your code, and attempt to fix it. Surely, you have learned how to initialise variables.

(His response "No I haven't, and stop calling me Shirley!" Both halves of that sentence as senseless as the other.)

Surely, you have learned how to initialise variables.

(His response "No I haven't, and stop calling me Shirley!" Both halves of that sentence as senseless as the other.)

That's the error that I get & That's what I don't understand, especially within (if, else statements when calculating a price).

I've only been exposed to Java programming since Jan 07, so I'm a true noob & idiot at programming...

Here, let me explain my train of thought in this program.

I'm trying to calculate a price including taxes up to 5 nights staying at a hotel.

so I use

define variables

ask suite letter then go into (if, else mode)

if (1st letter chosen)
then with letter chosen, do math with & without discount including taxes (which also means i need a range of numbers 1-4 & 5 > are the 2 sets which means i need another embedded if, else???)
else
if (2nd letter chosen)
etc.
else
if(3rd letter chosen)
else
error

end of story.

I just need to know how to do this w/Scanner.

Here is a sample of your code:

public static void main (String[] args) {
  String inputSuite;
  int nightsA;  // Here you declare, but do not define nightsA

  ...

  inputSuite = keyboard.nextLine();

  if (inputSuite.equalsIgnoreCase("A")) {
    System.out.println("How many nights do you plan on staying at the R & R?");
    nightsA = keyboard.nextInt();  // Here you define nightsA
  } else {
    System.out.println("Try one of our other suites. They might suit you better. ");
  }
  /* if the last if statement has not as yet
   * evaluated as true nightsA is not defined here
   * the compiler realizes this and flags it as an
   * error.  Change the line where you declare
   * nightsA to also make it a declaration.  i.e.
   * int nightsA = 0;
   * Or, you can set nightsA in the else side of
   * the above if statement.
   */
  if (nightsA <= 5 || nightsA >=1) {    suiteApricenoDCst = (suiteA * stateTax);
    suiteApricenoDCft = (suiteA * federalTax);
    suiteApricenoDC = (suiteA + suiteApricenoDCst + suiteApricenoDCft * nightsA); // or here
    System.out.println("Your price for your stay is " + suiteApricenoDC);
  } else if (nightsA > 5) {  // or here
    suiteADC = (suiteA * discount);
    suiteApriceDCst = (suiteADC * stateTax);
    suiteApriceDCft = (suiteADC * federalTax);
    suiteApriceDC = (suiteADC + suiteApricenoDCst + suiteApricenoDCft * nightsA);
    System.out.println("Your price for your stay is " + suiteApricenoDC);
  } else {
    System.out.println("ERROR!!!");
  }

  ...

}

Like jwenting said, you must explicitly declare all local variables. That means, before your code attempts to do anything with it, it must have appeared on the left side of an equals sign, in such a way so that that line will have executed before anything else is done with the variable.

And, you must do the same sort of thing with every other variable you have declared inside of this method.

Thanks for answering my question.
Error fixed! :)

hey here is a simple answer of what u have to do,just make sure u declare the nightsA=0 at first this will initialize as well as assign it the value but when the input is made the value will be automatically replaced by your input value.

its just initializaation my dear

Why resurrect a zombie to inadequately answer an already adequately answered question?

Closing this thread.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.