954,510 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

Java program using scanner

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);
}
}
}

PCKing
Newbie Poster
6 posts since Mar 2007
Reputation Points: 10
Solved Threads: 0
 

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.

jwenting
duckman
Team Colleague
8,392 posts since Nov 2004
Reputation Points: 1,662
Solved Threads: 337
 
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.

PCKing
Newbie Poster
6 posts since Mar 2007
Reputation Points: 10
Solved Threads: 0
 

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

Dukane
Posting Whiz in Training
295 posts since Oct 2006
Reputation Points: 45
Solved Threads: 29
 
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...

PCKing
Newbie Poster
6 posts since Mar 2007
Reputation Points: 10
Solved Threads: 0
 
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.)

masijade
Industrious Poster
Moderator
4,253 posts since Feb 2006
Reputation Points: 1,471
Solved Threads: 494
 

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...

PCKing
Newbie Poster
6 posts since Mar 2007
Reputation Points: 10
Solved Threads: 0
 

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.

PCKing
Newbie Poster
6 posts since Mar 2007
Reputation Points: 10
Solved Threads: 0
 

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.

masijade
Industrious Poster
Moderator
4,253 posts since Feb 2006
Reputation Points: 1,471
Solved Threads: 494
 

Thanks for answering my question.
Error fixed! :)

PCKing
Newbie Poster
6 posts since Mar 2007
Reputation Points: 10
Solved Threads: 0
 

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

snap_dragon
Newbie Poster
1 post since May 2010
Reputation Points: 10
Solved Threads: 0
 

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

Closing this thread.

masijade
Industrious Poster
Moderator
4,253 posts since Feb 2006
Reputation Points: 1,471
Solved Threads: 494
 

This question has already been solved

Post: Markdown Syntax: Formatting Help
You