如何用多个顶级类编译单个java文件

如何用多个顶级类编译单个java文件,java,class,Java,Class,这是我的java代码: import java.io.*; import java.util.*; public class student { String name; int age; float cgpa; } public class getdata { public static void main(String args[]) { int n; Scanner in=new Scanner(System.in);

这是我的java代码:

import java.io.*;
import java.util.*;
public class student
{
    String name;
    int age;
    float cgpa;
}
public class getdata
{
    public static void main(String args[])
    {
        int n;
        Scanner in=new Scanner(System.in);
        n=in.nextInt();
        student[] s=new student[n];
        for(int i=0;i<n;i++)
        {
            s[i]=new student();
            s[i].name=in.nextLine();
            s[i].age=in.nextInt();
            s[i].cgpa=in.nextFloat();
        }
        System.out.println();
        System.out.println("Name\tAge\tCGPA\n");
        for(int i=0;i<n;i++)
        {
            System.out.println(s[i].name+"\t"+s[i].age+"\t"+s[i].cgpa+"\n");
        }
    }
}
import java.io.*;
导入java.util.*;
公立班学生
{
字符串名;
智力年龄;
浮动cgpa;
}
公共类getdata
{
公共静态void main(字符串参数[])
{
int n;
扫描仪输入=新扫描仪(系统输入);
n=in.nextInt();
学生[]s=新学生[n];

对于(int i=0;i使班级学生成为内部班级:

import java.io.*;
import java.util.*;
public class getdata
{
    public static void main(String args[])
    {
        int n;
        Scanner in=new Scanner(System.in);
        n=in.nextInt();
        student[] s=new student[n];
        for(int i=0;i<n;i++)
        {
            s[i]=new student();
            s[i].name=in.nextLine();
            s[i].age=in.nextInt();
            s[i].cgpa=in.nextFloat();
        }
        System.out.println();
        System.out.println("Name\tAge\tCGPA\n");
        for(int i=0;i<n;i++)
        {
            System.out.println(s[i].name+"\t"+s[i].age+"\t"+s[i].cgpa+"\n");
        }
    }
    public static class student
    {
        String name;
        int age;
        float cgpa;
    }

}
import java.io.*;
导入java.util.*;
公共类getdata
{
公共静态void main(字符串参数[])
{
int n;
扫描仪输入=新扫描仪(系统输入);
n=in.nextInt();
学生[]s=新学生[n];

对于(inti=0;i而言,一般规则是在Java文件中只能有一个公共类

如果希望它在任何地方都可见(这取决于您的注释),可以在getdata中将该类声明为公共静态

它将是这样的:

public class getdata {
   public static class user {
     //class definition here
  }
}

现在,您的用户类可以在任何地方进行实例化。

您可以创建一个
.class
文件,然后只需运行要编译的类

javac FileName.java

java文件名\u containsMainMethod

编辑类不能是公共类

乙二醇 考虑以下类被保存为名称<代码>测试.java < /C> >,并包含单名测试两个类。java < /p>
class A
{
public static void main(String[] a)
{
System.out.println("Hello from A");
}
}

class B
{
public static void main(String[] a)
{
System.out.println("Hello from B");
}
}
现在要运行它,您需要执行以下操作
javac Test.java

从类A获取输出

JavaA

从类B获取输出

javab


注意
类中删除公共访问修饰符

您可以像前面提到的那样创建一个内部类,或者如果您不需要从该文件外部访问该类,则只需删除公共标记即可。这将允许您将多个顶级类放在一个文件中。

用于创建公共类的文件名是什么mpile it?一个java文件中只能有一个公共顶级类。请将其设置为类(
公共静态类student
),否则它将无法编译:)请坚持以大写字母开始上课。为什么@AlexanderPetrov的OP也可以这样说?我会在你的帖子中评论它,因为你在这里的声誉是最高的,因此可能应该知道得更好。但是如果第二个类是
私有的
或者<代码>受保护的
。对吗?它不需要是私有的或受保护的。例如,您可以将其声明为公共静态。这样,它可以从任何地方访问。