Hi:

I have to write a program generating the fibonacci sequence based on the length desired by the user. I'm using arrays and methods too. So I have to do one method to generate the sequence and another to print the other method. So far so good, except the last value is repeated. For example if I input 5, this is what it should come out

0 1 1 2 3

except this comes out

0 1 1 2 3 3

Here's what I done

import java.util.Scanner; //import scanner

public class TestFibArray {

	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in); //create new scanner

		//Prompt user for length
		System.out.print("How many fib terms would you like to display? ");
		int lenght = sc.nextInt();

		int[] p = new int[lenght]; //set new array p equal the defined user length

		printTerms( p, lenght ); //method to print terms


	}//main end

	//method to populate and calculate array and fib sequence
	public static int getNTerms( int[] p, int lenght ) {

		//print first two terms
		p[1] = 0;
		p[2] = 1;
		int newTerm = 0; //new value to calculate new terms on the sequence other that the first two

		if ( lenght == 1 )
			System.out.println(p[1]);
		else if ( lenght == 2 )
			System.out.println( p[1] + " " + p[2]);
		else { //print rest of terms

			System.out.print( p[1] + " " + p[2] + " ");

			//for loop to calculate the rest of the terms
			for ( int index = 3; index <= lenght; index++) {

				newTerm = p[1] + p[2];
				System.out.print( newTerm + " ");
				p[1] = p[2];
				p[2] = newTerm;
			}

		}

		return newTerm;

	} //nterms end

	//print terms
	public static void printTerms ( int[] p, int lenght ) {

		//print on console
		System.out.print(getNTerms ( p, lenght ));
	} //print end

} // file end

Any tips would be appreciated :)

Recommended Answers

All 3 Replies

Hi:

I have to write a program generating the fibonacci sequence based on the length desired by the user. I'm using arrays and methods too. So I have to do one method to generate the sequence and another to print the other method. So far so good, except the last value is repeated. For example if I input 5, this is what it should come out

0 1 1 2 3

except this comes out

0 1 1 2 3 3

Here's what I done

import java.util.Scanner; //import scanner

public class TestFibArray {

	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in); //create new scanner

		//Prompt user for length
		System.out.print("How many fib terms would you like to display? ");
		int lenght = sc.nextInt();

		int[] p = new int[lenght]; //set new array p equal the defined user length

		printTerms( p, lenght ); //method to print terms


	}//main end

	//method to populate and calculate array and fib sequence
	public static int getNTerms( int[] p, int lenght ) {

		//print first two terms
		p[1] = 0;
		p[2] = 1;
		int newTerm = 0; //new value to calculate new terms on the sequence other that the first two

		if ( lenght == 1 )
			System.out.println(p[1]);
		else if ( lenght == 2 )
			System.out.println( p[1] + " " + p[2]);
		else { //print rest of terms

			System.out.print( p[1] + " " + p[2] + " ");

			//for loop to calculate the rest of the terms
			for ( int index = 3; index <= lenght; index++) {

				newTerm = p[1] + p[2];
				System.out.print( newTerm + " ");
				p[1] = p[2];
				p[2] = newTerm;
			}

		}

		return newTerm;

	} //nterms end

	//print terms
	public static void printTerms ( int[] p, int lenght ) {

		//print on console
		System.out.print(getNTerms ( p, lenght ));
	} //print end

} // file end

Any tips would be appreciated :)

fyi, "length" is the correct spelling. A trace of p[1] and p[2] is as follows:

p[1] p[2] newTerm
0 1 1
1 1 2
1 2 3 (for loop terminates here!)

And then you return newTerm (3) to printTerms(), which displays the number again. I would delete the printTerms() method, rename the getNTerms() to printNTerms(), and remove the "return newTerm;" line and change the method type from "int" to "void".

Hi can someone explain how to get rid of the extra number that is being outputted at the end of the sequence? I didn't understand what the above comment said.. :(

Hi can someone explain how to get rid of the extra number that is being outputted at the end of the sequence? I didn't understand what the above comment said.. :(

Ahh i got it lol :D

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.