debugging 编译简单程序时出现Java错误:应为类、接口或枚举[已关闭]

rdlzhqv9  于 2023-01-21  发布在  Java
关注(0)|答案(1)|浏览(178)

这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
昨天关门了。
Improve this question

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);
        }
    }
}

所有要做的就是打印前10个fibo数字,然后添加功能来告诉计算机我想打印哪个fibo数字。比如说第一百万个fibo数字。

hjqgdpho

hjqgdpho1#

现在让我们来看看您提供的代码的问题:

1.定义类的语法

要在Java中定义一个类,它应该是这样的:

class Fibo {

}

1.在Fibo的末尾不应该有()
1.你应该使用小写的c而不是大写的C,这是Java中的一个关键字,区分大小写。
有时你会看到在class前面有一个关键字public

public class Fibo {

}

使用public,您可以访问Package之外的class,如果您想了解更多,我将把它留给您。

2.始终在类中定义函数

public static void main(String[] args) {}是一个函数。你应该总是把你的函数 * 放在 * 一个类里面。

public class Fibo {
    public static void main(String[] args) {
        // Your main running function
    }
}

3.调用函数或类的正确方法

要调用函数或创建新的类对象:

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.获得斐波那契数列的逻辑

首先,这里有一些斐波那契数列:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233
第一个数字= 0
第二个数字= 1
第三个数字=第一个数字+第二个数字
第四个数字=第二个数字+第三个数字
...等等
所以根据上面的逻辑,我们可以写出我们的函数来生成斐波那契数:

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;
        }
    }
}
    • 产出**
0
1
1
2
3
5
8
13
21
34

当然,上述程序可以简化,也可以得到同样的结果,但在现阶段,有一个更清晰的概念是最重要的。

5.删除未使用的导入

这不是致命的,但却是一个好的实践,因为在你的代码中,你没有使用任何来自其他包的类,因此你不需要导入任何东西。

import java.util.*;

6.保留缩进

这也不是致命的,但作为一个很好的实践。下面的代码中,哪一个希望看到?

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);
    }
}

还有你的额外问题,这次你必须使用包之外的类,所以你需要使用import,这个类是Scanner
因此,新的完整代码应该如下所示:

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;
        }
    }
}
    • 产出**
Enter target: 10
0
1
1
2
3
5
8
13
21
34

相关问题