import java.util.*;
public static void main(String args[]){
Fibo();
Class Fibo(){
int n1=0, sum;
for(int i =0; i<10; i ){
sum = i n1;
n1=n1 sum;
System.out.println("" sum);
}
}
}
All want to do is print the first 10 fibo numbers and then add functionality to tell the computer which fibo numbers I want to print. Say like the 1 millionth fibo number.
CodePudding user response:
That is genuinely some of the worst Java I've ever had the displeasure of seeing.
Use this instead:
public class Main {
public static void main(String[] args) {
int sum = 0;
for (int i = 0; i < 10; i ) {
sum = i;
System.out.println(sum);
}
}
}
The output is:
0
1
3
6
10
15
21
28
36
45
CodePudding user response:
So let's get to the problems of your provided code:
1. Syntax of defining a Class
To define a class in Java
, it should be something like this:
class Fibo {
}
- There should be no
()
at the end ofFibo
. - You should use a lower case
c
instead of upper caseC
. That is a keyword inJava
and it is case-sensitive.
And sometimes you would see there is a keyword public
in front of class
:
public class Fibo {
}
With public
, you can access the class
outside the Package
. And I leave it to you if you want to explore more.
2. Always define your functions inside a Class
public static void main(String[] args) {}
is a function
. And you should always place your function
inside a Class
.
public class Fibo {
public static void main(String[] args) {
// Your main running function
}
}
3. Proper way to call Function
or Class
To call function or create a new Class object:
public class Test {
public static void main(String[] args) {
// Below is a function call
functionTwo();
// Below is creating a new class, assuming you have another simple Class named ClassTwo with only default constructor
ClassTwo classTwo = new ClassTwo();
}
private static void functionTwo() {
System.out.println("Inside functionTwo");
}
}
4. Logic of getting your Fibonacci numbers
First of all, here are some Fibonacci numbers:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233
The first number = 0
The second number = 1
The third number = The first number The second number
The fourth number = The second number The third number
... and so on
So according to the above logic, we can write our function to generate Fibonacci numbers:
public class Fibo {
public static void main(String[] args) {
int target = 10;
int firstNumber = 0;
int secondNumber = 1;
int nextNumber = 0;
System.out.println(firstNumber); // Print out the First Number
System.out.println(secondNumber); // Print out the Second Number
// Because there is a logic starting from the Third Number
// Here we use a for loop to repeat until we get to our target 10
for (int i = 2; i < target; i ) {
// Next number is equal to (i-2) (i-1), where i = current number
nextNumber = firstNumber secondNumber;
// Print out the current number
System.out.println(nextNumber);
// As a for loop proceeds to the next one, we also need to update
// our firstNumber and secondNumber with next one
firstNumber = secondNumber;
secondNumber = nextNumber;
}
}
}
Output
0
1
1
2
3
5
8
13
21
34
Of course the above program can be simplified and also obtain the same result. But at this stage, having a clearer concept is of utmost importance.
5. Remove unused Import
This is not fatal but as a good practice. Because in your code, you have not made use of any classes from other packages and therefore you do not need to import anything.
import java.util.*;
6. Keep indentation
This is also not fatal but as a good practice. Which of the following code would like to see?
public static void main(String[] args) {
System.out.println("This is a line");
int a = 0;
int b = 10;
for (int i = 0; i < 10; i ) {
System.out.println("Line" i);
}
}
public static void main(String[] args) {
System.out.println("This is a line");
int a = 0;
int b = 10;
for (int i = 0; i < 10; i ) {
System.out.println("Line" i);
}
}
And to your extra question. This time you have to make use of class that is beyond your package. So you need to make use of import
. And that class is Scanner
.
So the new full code should be like this:
import java.util.Scanner;
public class Fibo {
public static void main(String[] args) {
System.out.print("Enter target: ");
Scanner scanner = new Scanner(System.in);
int target = scanner.nextInt();
int firstNumber = 0;
int secondNumber = 1;
int nextNumber = 0;
System.out.println(firstNumber); // Print out the First Number
System.out.println(secondNumber); // Print out the Second Number
// Because there is a logic starting from the Third Number
// Here we use a for loop to repeat until we get to our target 10
for (int i = 2; i < target; i ) {
nextNumber = firstNumber secondNumber;
System.out.println(nextNumber);
firstNumber = secondNumber;
secondNumber = nextNumber;
}
}
}
Output
Enter target: 10
0
1
1
2
3
5
8
13
21
34