Egrimo Egrimo - 1 month ago 5
Java Question

Get a Column From an ArrayList

So I'm writing a console-based

Shape Creator
that creates shapes with user input. If an user wants to create 5 Square, the program create an
ArrayList
and get data from Square class which has shapeId,area etc.

import java.util.ArrayList;
import javax.swing.JOptionPane;

public class ShapeMaker {


public ShapeMaker(){


create();

}

public void create(){
//creates list of arrays within shapes.
ArrayList<Circle>circles=new ArrayList<Circle>();
ArrayList<Square>squares=new ArrayList<Square>();
ArrayList<Rectangle>rectangles=new ArrayList<Rectangle>();

//this loop is dangerously infinity but I had to open the program for choices.
while(true){
String[] choices={"Create Random Shapes","Circles","Squares","Rectangles",
"Print All Shapes","Print Rectangles","Print Squares",
"Print Circles","Exit"};
String optionMenu = (String)JOptionPane.showInputDialog(
null,
"Choose what you desire",
"Customized Dialog",
JOptionPane.PLAIN_MESSAGE,
null,
choices,
choices[0]);


if (optionMenu==choices[0]){
// String input4=(String)JOptionPane.showInputDialog(null,"How Many Shape ?","Question",
// JOptionPane.QUESTION_MESSAGE);
// int inputLength4=Integer.parseInt(input4);
// for (int i=0;i<inputLength4;i++){
//
// circles2[i]=new Circle();
// circles.add(circles2[i]);
// squares2[i]=new Square();
// squares.add(squares2[i]);
// rectangles2[i]=new Rectangle();
// rectangles.add(rectangles2[i]);
//
// }
// JOptionPane.showMessageDialog(null,inputLength4+" shapes have been created successfully.");
}
else if (optionMenu==choices[1]) {
String input=(String)JOptionPane.showInputDialog(null,"How Many Circle ?","Question",
JOptionPane.QUESTION_MESSAGE);
int inputLength=Integer.parseInt(input);
Circle[]circles2=new Circle[inputLength];
if (circles.isEmpty()==false){
int delete=JOptionPane.showConfirmDialog(null, "There are circles in the list. Do you want to delete them?",
"Existing Shapes",JOptionPane.YES_NO_OPTION);
if (delete==JOptionPane.YES_OPTION){
circles.remove(circles2);
}
else{
for (int i=0;i<inputLength;i++){
circles2[i]=new Circle();
circles.add(circles2[i]);
}
}

}
else{


for (int i=0;i<circles2.length;i++){
circles2[i]=new Circle();
circles.add(circles2[i]);
}
JOptionPane.showMessageDialog(null,inputLength+" circle have been created successfully.");
}

}
else if (optionMenu==choices[2]) {
String input3=(String)JOptionPane.showInputDialog(null,"How Many Squares ?","Question",
JOptionPane.QUESTION_MESSAGE);
int inputLength3=Integer.parseInt(input3);
Square[]squares2=new Square[inputLength3];
if (squares.isEmpty()==false){
int delete=JOptionPane.showConfirmDialog(null, "There are squares in the list. Do you want to delete them?",
"Existing Shapes",JOptionPane.YES_NO_OPTION);
if (delete==JOptionPane.YES_OPTION){
squares.remove(squares2);
}
else{
for (int i=0;i<inputLength3;i++){
squares2[i]=new Square();
squares.add(squares2[i]);
}
}

}
else{

for (int i=0;i<inputLength3;i++){
squares2[i]=new Square();
squares.add(squares2[i]);
}
}
JOptionPane.showMessageDialog(null,inputLength3+" square have been created successfully.");


}
else if (optionMenu==choices[3]) {
String input2=(String)JOptionPane.showInputDialog(null,"How Many Rectangles ?","Question",
JOptionPane.QUESTION_MESSAGE);
int inputLength2=Integer.parseInt(input2);
Rectangle[]rectangles2=new Rectangle[inputLength2];
if (rectangles.isEmpty()==false){
int delete=JOptionPane.showConfirmDialog(null, "There are rectangles in the list. Do you want to delete them?",
"Existing Shapes",JOptionPane.YES_NO_OPTION);
if (delete==JOptionPane.YES_OPTION){
rectangles.remove(rectangles2);
}
else{
for (int i=0;i<inputLength2;i++){
rectangles2[i]=new Rectangle();
rectangles.add(rectangles2[i]);
}
}

}
else{
for (int i=0;i<inputLength2;i++){
rectangles2[i]=new Rectangle();
rectangles.add(rectangles2[i]);

}
JOptionPane.showMessageDialog(null,inputLength2+" rectangle have been created successfully.");
}
}
else if (optionMenu==choices[4]) {
System.out.printf("%-5s%-13s%-10s%-13s%-10s%-15s%n", "ID","Shape",
"Area","Full Shape", " Distance", "Properties");
System.out.println();
for (int i=0;i<rectangles.size();i++){
System.out.println(rectangles.get(i));
}
for (int i=0;i<squares.size();i++){
System.out.println(squares.get(i));
}
for (int i=0;i<circles.size();i++){
System.out.println(circles.get(i));
}


}
else if (optionMenu==choices[5]) {
System.out.printf("%-5s%-13s%-10s%-13s%-10s%-15s%n", "ID","Shape",
"Area","Full Shape", " Distance", "Properties");
System.out.println();
for (int i=0;i<rectangles.size();i++){
System.out.println(rectangles.get(i));

}
System.out.print("There are "+rectangles.size()+" rectangle with total area of ");
}
else if (optionMenu==choices[6]) {
System.out.printf("%-5s%-13s%-10s%-13s%-10s%-15s%n", "ID","Shape",
"Area","Full Shape", " Distance", "Properties");
System.out.println();
for (int i=0;i<squares.size();i++){
System.out.println(squares.get(i));

}
System.out.print("There are "+squares.size()+" square with total area of ");

}
else if (optionMenu==choices[7]) {
System.out.printf("%-5s%-13s%-10s%-13s%-10s%-15s%n", "ID","Shape",
"Area","Full Shape", " Distance", "Properties");
System.out.println();
for (int i=0;i<circles.size();i++){
System.out.println(circles.get(i));

}
System.out.print("There are "+circles.size()+" circle with total area of ");
}
else if(optionMenu==choices[8]) {
System.exit(1);

}
}

}

public static void main(String [] args){
new ShapeMaker();
// System.out.println(shape);


}
}


The question is, i need to get values from area row and calculate total area of these shapes.
Output

So, how can I get all areas of created ArrayList ?

Answer

Greatings, Egrimo.

As you told, you have a Square class, which has all the attributes: ID, Shape, Area, Full Shape, Distance and Properties.

When you do:

System.out.println(squares.get(i));

And you want to access to Area attribute, you have to do:

  1. Create a method getArea() in your Square class. This method must be public and will return the area of the square.
  2. Call getArea() method from your System.out.println to print the square area:

System.out.println(squares.get(i).getArea()); Will print your square area.

EDIT:

If you don't know how create a getArea() method, look at this example:

public class Square{
    int area;
    int id;
    // other attributes

    // constructor

    public int getArea(){ // This method will return your square area
        return this.area;
    }
}

Have a good day!