1. Limited time only! Sign up for a free 30min personal tutor trial with Chegg Tutors
    Dismiss Notice
Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Declaring an array in a for loop (Java) or similar

  1. Nov 3, 2011 #1
    1. The problem statement, all variables and given/known data

    I need to create a loop that asks the user to input double numbers into an array. The number of elements in the array is not predefined; the user will continue to enter numbers as long as they wish until a NEGATIVE number is entered, at which point the control will exit the loop used for inputting.

    2. Relevant equations

    None

    3. The attempt at a solution

    My problem is this: my understanding is that an array can't do anything, ie can't be used, until the control knows how much memory to allocate for that array.

    import java.util.Scanner;

    public class ClassifyScores2
    {
    public static void main(String[]args)
    {
    Scanner input = new Scanner(System.in);

    System.out.println("This program classifies scores into different ranges.");

    System.out.println("Enter your scores now, enter a negative number when you wish to stop:");

    for (ind = 0; new score[ind] >= 0 ; ind++)
    {
    score[ind] = input.nextInt();
    //if(score[ind] > 100)
    //System.out.println("This score is too high. Enter a score less than or equal to 100");
    //else if(score[ind] < 0)
    //System.exit(1);
    //else
    //score2[ind] = score[ind]

    the commented if statements I can do myself, I'm not concerned with that. I will close the loop later on. My program runs and compiles if I define the array score somewhere earlier --> there are no syntax errors in my source code except what is in bold.

    I am able to ask the user "How many numbers will you be inputting?" and then store that number, and then use that in the loop. That way, the control knows how many numbers will be entered. But the assignment strictly says "The user of your program can enter as many scores as (s)he wishes. The user identifies the end by entering a negative number for score; your program then should display the tabulated scores and exit."

    This must be followed. The only way I can see this is by declaring my "score" array INSIDE my FOR loop. I have no clue how to do this! Is this possible? Is there any other way of doing this?

    Thank you so much in advance!
    1. The problem statement, all variables and given/known data



    2. Relevant equations



    3. The attempt at a solution
     
  2. jcsd
  3. Nov 4, 2011 #2

    CompuChip

    User Avatar
    Science Advisor
    Homework Helper

    Does the assignment specifically say that the values should be stored in an array?

    If so, then you could just make the array very large (say, 1024 items). Then you can either store the index of the last valid score entered, or look for a negative number when playing the scores back.

    If not, have a look at some of the other Java containers, like Vector and ArrayList.
     
  4. Nov 4, 2011 #3

    Ibix

    User Avatar
    Science Advisor

    Something like ArrayList is easiest, since it dynamically resizes itself. If you are required to use an int[] then define it with a certain size. When it is full, create a new, larger, array, copy the existing entries across, and then point score to the new array.
     
  5. Nov 4, 2011 #4

    CompuChip

    User Avatar
    Science Advisor
    Homework Helper

    Also, you might want to look up break... it's slightly less rigorous than System.exit() :-)
     
  6. Nov 4, 2011 #5
    The assignment was intended to get us comfortable with single dimensional, basic arrays. We haven't been taught anything regarding Vector or ArrayList yet, so the only way I see is to create a simple array. I imagine this is the only way because how else can the user store as many variables as s/he wants?

    Anyways, the assignment was due about an hour ago, so I ended up just prompting the user to input how many scores s/he intends to input, then the array is created with THAT many elements. Not what the assignment was asking for specifically, but it was the best I could do.

    But just so I know, is there any way of doing it without asking the user how many scores will be entered, and just using a regular array?

    Thanks again.
     
  7. Nov 4, 2011 #6
    You mean a switch statement? Well i ended up removing the System.exit(); line anyways. I revamped the for statement body. But thanks :)
     
  8. Nov 4, 2011 #7

    CompuChip

    User Avatar
    Science Advisor
    Homework Helper

    No, I meant "break" to break out of a loop :-)
     
  9. Nov 4, 2011 #8

    Mark44

    Staff: Mentor

    switch and break are completely different kinds of statements. A switch structure is a lot like an if ... then else if ... else block, while a break statement is similar to a goto.
     
  10. Nov 4, 2011 #9

    CompuChip

    User Avatar
    Science Advisor
    Homework Helper

    Mark, the confusion arises because you can also use break to break out of the switch:
    Code (Text):

    switch(x)
    {
      case 1:
        // do something
        break; // no fall-through
      case 2:
        // something else
      // ...
    }
     
    I meant it in the context of
    Code (Text):

    for(int i = 1; i < 10; ++i)
    {
      if (i == 5)
      {
        break;
      }
    }
     
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook




Similar Discussions: Declaring an array in a for loop (Java) or similar
  1. Arrays in Java (Replies: 3)

  2. Java class Arrays (Replies: 1)

Loading...