Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 2 of 2
  1. #1
    New to the CF scene
    Join Date
    Mar 2011
    Posts
    3
    Thanks
    1
    Thanked 0 Times in 0 Posts

    Need HElp Now, DUE Today

    Okay, So I was assigned a project for school.
    It is to prompt the user to enter a fixed number of points, declare the max and min X values, then plug x into an equation for y and print it. I've been able to successfully do that.

    Here my problem: I get this exact error

    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
    at locZero.main(locZero.java:41)

    This comes into play at line 41 when im trying to use if statements and another array to record where the y values change signs from pos to neg/vise versa.

    Here is the code
    Code:
    import java.util.Scanner;
    
    public class locZero{
    	public static void main(String[]args){
    		
    		Scanner input= new Scanner(System.in);
    		
    		double minX, maxX;
    		int numPoints;
    		int numChange=0;
    		
    		System.out.print("Enter number of points: ");
    		numPoints=input.nextInt();
    		System.out.print("Enter min x: ");
    		minX=input.nextDouble();
    		System.out.print("Enter max x: ");
    		maxX=input.nextDouble();
    		
    		
    		double [] x= new double[numPoints];
    		double [] y= new double[numPoints];
    		double [] change= new double[numPoints];
    		
    		System.out.println("i"+"\t"+"x[i]"+"\t"+"y[i]");
    		
    		for(int i=0;i<numPoints;i++){
    			System.out.print(i+"\t");
    			
    			x[0]=minX;
    			x[numPoints-1]= maxX;
    			x[i]=x[0]+i*((maxX-minX)/(numPoints-1));			
    			y[i]=(((x[i])*(x[i])*(x[i]))-(2*((x[i])*(x[i])))-(5*x[i])+4);
    			
    		
    			System.out.print(x[i]);
    			System.out.print("\t");
    			System.out.print(y[i]);
    			System.out.println();
    			
    			for(i=0;i<=numPoints;i++){
    				if(y[i]>=0 && y[i+1]<0){
    					change[numChange]=i;
    					numChange++;
    				}
    				else if(y[i]>0 && y[i+1]<=0){
    					change[numChange]=i;
    					numChange++;
    				}
    		
    			}
    		}
    	
    		
    	}
    		
    }
    please try to help me. I know the error means im using an array that does exist, but i dunno how i am.

  • #2
    Supreme Master coder! Old Pedant's Avatar
    Join Date
    Feb 2009
    Posts
    25,965
    Thanks
    79
    Thanked 4,426 Times in 4,391 Posts
    Code:
    			for(i=0;i<=numPoints;i++){
    				if(y[i]>=0 && y[i+1]<0){
    					change[numChange]=i;
    					numChange++;
    				}
    				else if(y[i]>0 && y[i+1]<=0){
    Your other loops only went to i < numPoints. With this loop, you are guaranteed to be 1 past the end of the array.

    But then you make it worse:
    How can you use i+1 if i is already at or past the maximum value for the array subscript??
    An optimist sees the glass as half full.
    A pessimist sees the glass as half empty.
    A realist drinks it no matter how much there is.

  • Users who have thanked Old Pedant for this post:

    Fot (03-23-2011)


  •  

    Posting Permissions

    • You may not post new threads
    • You may not post replies
    • You may not post attachments
    • You may not edit your posts
    •