如何编译具有多个顶级类的单个java文件

时间:2016-07-10 08:04:40

标签: 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);
        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");
        }
    }
}

当我编译程序时,它会给出错误,即每个类应该在不同的文件中。如何编译这个没有任何错误? (我知道这不是最佳做法,但我需要在同一个文件中执行此操作。)

4 个答案:

答案 0 :(得分:2)

一般规则是,您可以在Java文件中只有一个公共类

如果您希望从任何地方都可以看到它(这取决于您的评论),您可以在getdata中将该类声明为公共静态。

会是这样的:

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

现在,您的User类可用于实例化。

答案 1 :(得分:1)

让班级学生成为内部班级:

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

}

文件名必须为getdata.java。并阅读有关Java命名约定的内容。类名应以大写字母开头。

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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

javac FileName.java

java fileName_containsMainMethod

编辑课程不能公开

例如 请考虑以下类保存为名称Test.java,并在单个名称Test.java

下包含两个类
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类获得输出

java A

  

从B类获得输出

java B

注意class

删除公共访问修饰符