# What’s wrong with my code?

Hello everyone,
Please, I don’t understand what’s wrong with this code:

class Fibonacci {
public static String test(int n) {
String fib = “”;
int x = 0;
int y = 1;
int z = x + y;
int i = 0;
do{
fib = String.valueOf(x) + " " + String.valueOf(y) + " " +String.valueOf(z) + " ";
i++;
}
while (i < n);{
x = y;
y = z;
z = x +y;
fib += String.valueOf(z) + " ";
i++;
}

``````    // Enter your code here
// Store your final result in the variable fib

/* You do not need to worry too much about the return statement for the
moment and just set the value of “fib” correctly*/

return fib;
}
``````

}
Thank you

Hello @Asmae!
Thanks for reaching out to us. There are two types of errors in your code.

• Syntax errors
In this code, One closing bracket (`}`) for the class is missing at the end and also you have added one extra opening bracket(`{`) after `while(i<n);`.
• Logical errors
The following code should be in the do while loop.
``````x = y;
y = z;
z = x +y;
``````

You just need to concatenate the value of x in a string named fib at start of do while loop such as.

``````fib += String.valueOf(x)+",";
``````

The following line is not needed at all.

``````fib += String.valueOf(z) + " ";

``````

The final code should be like that:

``````class Fibonacci {
public static String test(int n) {
String fib = “”;
int x = 0;
int y = 1;
int z = x + y;
int i = 0;
do{
fib += String.valueOf(x)+",";
x = y;
y = z;
z = x +y;
i++;
}while (i < n);

return fib;
}
public static void main(String[] args) {
System.out.println(test(10));
}
}

``````

Note: if you dry run your code, you will find out that in the first iteration of the ** do while** loop, the value of string fib will become ``` 0 1 1" then in each iteration you are concatenating the same values (0,1,1 ) in the string because you didn’t update values of variables in ** do while** loop.
After loop, you have updated values of variables (x,y,z) and then concatenated the value of z in string fib.
For example (if n=5) then in the first 5 iterations, your string will become “0 1 1 0 1 1 0 1 1 0 1 1 0 1 1” and after loop you have concatenated value of z (“2”).

I hope this will help. Thanks

1 Like

Hello @Javeria_Tariq
Thanks for your answer and the explanation.

1 Like