variable might not have been initialized (abstract class)
compiler-errors, java
Solution
Figure f;
Above statement is inside `main` method. There is a possibility that if/else conditions not satisfied, which leaves f unassigned.
Change it to something like below:
Figure f=null;
All local variables need to have some value assigned before being used.
Along with that, make sure to perform null check before performing any operations on f.
Problem
I've just approached to the Java language, so I usually get even into banal errors. The following should be one of them. Es1.java:93: error: variable f might not have been initialized Things to know before looking into the code - I'm using some custom class: ConsoleInputManager and ConsoleOutputManager work substantially like Scanner and System.out; Figure is an abstract class; Circle, Square and Rectangle extend Figure ``` import prog.io.*; //ConsoleInputManager, ConsoleOutputManager import prog.utili.*; //Figure, Circle, Squade, Rectangle class Es1{ public static void main(String[] args){ //Variables ConsoleInputManager in = new ConsoleInputManager(); ConsoleOutputManager out = new ConsoleOutputManager(); int com1,com2,com3; com1 = com2 = com3 = 0; double r,s,l,w; r = s = l = w = 0.0; Figure f; do{ //Menu out.println("1. Insert a new figure"); out.println("2. Calculate the area of the current figure"); out.println("3. Examine the current figure"); out.println("4. Exit the program\n"); //Input com1 = in.readInt("Command: "); //New figure if (com1 == 1){ do{ out.println("1. Circle"); out.println("2. Square"); out.println("3. Rectangle"); out.println("4. Back to main menu\n"); com2 = in.readInt("Command: "); //Circle if (com2 == 1){ s = l = w = 0.0; do{ r = in.readDouble("Radius: "); } while (r <= 0); } else //Square if (com2 == 2){ r = l = w = 0.0; do{ s = in.readDouble("Side: "); } while (s <= 0); } else //Rectangle if (com2 == 3){ r = s = 0.0; do{ l = in.readDouble("Length: "); } while (l <= 0); do{ w = in.readDouble("Width: "); } while (w <= 0); } } while (com2 != 4); } else //Area if (com1 == 2){ if (r != 0.0){ f = new Circle(r); out.println("Area = " + f.getArea()); } else if (l != 0.0){ f = new Square(s); out.println("Area = " + f.getArea()); } else if ( b != 0.0){ f = new Rectangle(l,w); out.println("Area = " + f.getArea()); } else out.println("It hasn't been inserted any figure"); } else //Examination if (com1 == 3){ do{ out.println("1. Examine the current figure"); out.println("2. Back to main menu"); com3 = in.readInt("Command: "); if (com3 == 1){ if (f instanceof Circle) out.println("Circle"); else if (f instanceof Square) out.println("Square"); else if (f instanceof Rectangle) out.println("Rectangle"); else out.println("It hasn't been inserted any figure"); } } while (com3 != 2); } } while (com1 != 4); } } ```