有人知道我在执行这段java代码时做错了什么吗?

有人知道我在执行这段java代码时做错了什么吗?,java,Java,我只是尝试执行一些Java代码并将它们打印到控制台,然而,当我尝试运行它时,它给出了一个错误,并表示非法启动表达式。有人知道这里发生了什么吗 package com.craneai; public class Main { public static void main(String[] args) { public static void int F(int N) { int X, Y, Z, I; int

我只是尝试执行一些Java代码并将它们打印到控制台,然而,当我尝试运行它时,它给出了一个错误,并表示非法启动表达式。有人知道这里发生了什么吗

    package com.craneai;

public class Main {

    public static void main(String[] args) {

        public static void int F(int N) {
            int X, Y, Z, I;

            int X = 2;
            if(N <= 0) {
                X = 3;
            } else {
                Y = 1;
                Z = 1;
                for (int I = 3; I <=N; I++) {
                    X = Y + Z;
                    Z = Y;
                    Y = X;
                }
            }
            return X;
        }


        System.out.println(F(6));
        System.out.println(F(0));
        System.out.println(F(1));

    }



}
package com.craneai;
公共班机{
公共静态void main(字符串[]args){
公共静态无效int F(int N){
int X,Y,Z,I;
int X=2;
如果(N)
2.方法应在
主方法之外

3.您在代码中声明了两次
X
,第二次调用时,您不必声明类型,编译器将尝试将其作为一个新变量处理,该变量的名称已在使用中

4.在您的
for
方法中,您声明了
X
,Java再次区分大小写,因此
X
X
在编译器中是不同的

5.您还声明了两次
I
,在调用
for
方法之前不需要提供临时变量,因为您可以在
for
循环中执行

看起来您已经开始学习Java了,这是自Java 5以来使用Java的人提供的一些提示

  • 不要用一个字母来声明变量
  • 不要用一个字母来声明函数/方法
  • 不要用大写、小写和小写来声明变量

即使作为一个例子,你应该使你的代码更干净,提高其他人的可读性,如果你这样做,其他人将来会更快乐(包括你自己).

首先:您正在另一个方法中声明一个方法-请查看
F
方法在
main
方法中。Java不支持嵌套方法

第二:您两次声明
X
I

第三:您在方法中编写了两种返回类型:
void
int

这将有助于:

public class Main {

    public static void main(String[] args) {
        System.out.println(F(6));
        System.out.println(F(0));
        System.out.println(F(1));
    }

    public static int F(int N) {
        int X, Y, Z, I;

        X = 2;
        if (N <= 0) {
            X = 3;
        } else {
            Y = 1;
            Z = 1;
            for (I = 3; I <= N; I++) {
                X = Y + Z;
                Z = Y;
                Y = X;
            }
        }
        return X;
    }

}
公共类主{
公共静态void main(字符串[]args){
系统输出println(F(6));
系统输出println(F(0));
系统输出println(F(1));
}
公共静态整数F(整数N){
int X,Y,Z,I;
X=2;
如果(N3个主要错误:

  • 嵌套方法:
    F
    methodinside
    main
  • 方法F返回
    int
    void
  • 你申报了两次X和我
  • 这是你的班级:

    public class Main {
        
            public static void main(String[] args) {
                System.out.println(F(6));
                System.out.println(F(0));
                System.out.println(F(1));
        
            }
        
            public static int F(int N) {
                int X = 2, Y, Z;
        
                if (N <= 0) {
                    X = 3;
                } else {
                    Y = 1;
                    Z = 1;
                    for (int I = 3; I <= N; I++) {
                        X = Y + Z;
                        Z = Y;
                        Y = X;
                    }
                }
                return X;
            }
        }
    

    Java没有嵌套的方法。将方法
    F()
    移出
    main()
    。另外,尽管技术上不是必需的,但一定要遵循标准的Java命名约定:方法以驼峰大小写命名,首字母为小写字母。你已经像I和XB一样声明了两次变量,但为什么要这样做呢?只需将代码放在
    IDE中
    好了,伙计们,我将方法移出了main,并更新了帖子为了展示我所拥有的。它现在说的是identifier expected。在您尝试再次运行代码之前,有一些事情需要解决,请检查下面我提供的答案,我列出了一些您遗漏的小事情,还有更多。@Kennyman335您试图在
    for
    循环中重新分配
    I
    的值,或者只是忘记更改e到小写的
    i
    ?我在做什么?你在循环中看到i的重新分配在哪里?我删除了先前声明的变量i的声明,该声明与其他变量一起声明,然后仅使用for声明和初始化i(这是for的工作方式)另外,我没有忘记小写:Java是区分大小写的,我只是使用所有大写,以避免对已经编写的代码进行太多更改。哦,对了,对不起,我对错误的答案发表了评论。呵呵,不用担心:)如果你认为可以,请投赞成票。
    public class Main {
    
        public static void main(String[] args) {
            System.out.println(F(6));
            System.out.println(F(0));
            System.out.println(F(1));
        }
    
        public static int F(int N) {
            int X, Y, Z, I;
    
            X = 2;
            if (N <= 0) {
                X = 3;
            } else {
                Y = 1;
                Z = 1;
                for (I = 3; I <= N; I++) {
                    X = Y + Z;
                    Z = Y;
                    Y = X;
                }
            }
            return X;
        }
    
    }
    
    public class Main {
        
            public static void main(String[] args) {
                System.out.println(F(6));
                System.out.println(F(0));
                System.out.println(F(1));
        
            }
        
            public static int F(int N) {
                int X = 2, Y, Z;
        
                if (N <= 0) {
                    X = 3;
                } else {
                    Y = 1;
                    Z = 1;
                    for (int I = 3; I <= N; I++) {
                        X = Y + Z;
                        Z = Y;
                        Y = X;
                    }
                }
                return X;
            }
        }
    
    8
    3
    2