简体   繁体   中英

Storing info into an array of another class

I've been working on this for a while but can't seem to get it. I need to store user input into an array from another object but I can't get it to work. I'm not sure if its my constructor or I'm missing something but any help is appreciated

Here is the output program

    public static void main(String[] args) {
       Scanner sc = new Scanner(System.in);
       System.out.println("Enter   'p' to create a polygon");
       String in = sc.next();

    if (in.equals("p")) {
        System.out.println("How many sides?");
        int numSides = sc.nextInt();
        int side=0; 

        Polygon ps;
        for (int i = 1; i <= numSides; i++) {

            System.out.println("Enter the length of side " + i);
            side = sc.nextInt();
             ps = new Polygon(side);

        }
         ps = new Polygon(side);

Here is the constructor of the other class

public class Polygon {
    protected int[] sideLengths;


public Polygon(int sides){
    sideLengths= new int[sides];

}

you need to do

ps=new Polygon(numSides+1); //adding 1 because for-loop starts with index 1
for (int i = 1; i <= numSides; i++) {

      System.out.println("Enter the length of side " + i);
      side = sc.nextInt();
      ps[i]=side;

}

by this what we do is assign the 'side' value entered by user to a particular index in array.

hope this helps!

Good luck

The way I understand your Program I think you are looking for this kind of logic

if (in.equals("p")) {
            System.out.println("How many sides?");
            int numSides = sc.nextInt();
            int side = 0;

            Polygon ps;
            int sideLengths[] = new int[numSides];// array to store length of  polygon of sides `numSides`
            for (int i = 1; i <= numSides; i++) {

                System.out.println("Enter the length of side " + i);
              sideLengths[i-1] = sc.nextInt();// creating array to store lengths


            }
            ps = new Polygon(sideLengths);// generating your pollygon by sending the array

        }

And you Polygon class should look like this

    class Polygon {

            protected int[] sideLengths;// storing the lengths of all sides

            public Polygon(int dimensions[]) {
                sideLengths = dimensions ;

            }
        }
 public static void main(String[] args) {
       Scanner sc = new Scanner(System.in);
       System.out.println("Enter   'p' to create a polygon");
       String in = sc.next();


            if(in.equalsIgnoreCase("p")) {
                Integer sides[];
                System.out.println("How many sides?");
                int numSides = sc.nextInt();
                int side=0; 
                if(numSides>0){
                    sides = new Integer[numSides];
                }
                Polygon ps;
                for (int i = 1; i <= numSides; i++) {

                    System.out.println("Enter the length of side " + i);
                    side = sc.nextInt();
                    sides[i] = side;

                }

                ps = new Polygon(sides);
            }
     }

public class Polygon {
    private Integer[] sides;
    public Polygon(Integer[] sides){
        this.sides = sides;
    }
}

Now we have created an array of size of sides and array is been passed as an argument to constructor for initializing Polygon's object

it should be like

public static void main(String[] args) {
   Scanner sc = new Scanner(System.in);
   System.out.println("Enter   'p' to create a polygon");
   String in = sc.next();

if (in.equals("p")) {
    System.out.println("How many sides?");
    int numSides = sc.nextInt();
    int side=0; 

    Polygon ps = new Polygon(numSides);
    for (int i = 1; i <= numSides; i++) {

        System.out.println("Enter the length of side " + i);
        side = sc.nextInt();
        ps.addSide(side, i-1);
         //ps = new Polygon(side);

    }
     //ps = new Polygon(side);
}}}

and Polygon class like

public class Polygon {
    protected int[] sideLengths;


    public Polygon(int sides){
        sideLengths= new int[sides];

    }
    public void addSide(int side, int index){
        sideLengths[index] = side;
    }
}

You are calling the constructor correctly, but after for loop ends you are again creating a new instance of Polygon and assigning it to ps. Either create an array of int or ArrayList of Integer, and store each instance of Polygon side length in that just before the for loop ends.

ArrayList<int> psListpsSideLengthList = new ArrayList<int>;
for (int i = 1; i <= numSides; i++) {

    System.out.println("Enter the length of side " + i);
    side = sc.nextInt();
     psListpsSideLengthList.add(side);

}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM