错误:找不到主类

时间:2012-09-30 15:43:57

标签: java compilation main-method

编译程序时,我得到错误

无法找到主类:解决方案。程序将退出。

该计划是:

import java.util.*;

public class Solution{
   public static long[] factors(long a){
     long[] b;
     b=new long[50];
     int count=0;
     for(long i=1L;i<=a/2;i++)
       if(a%i==0) b[count++]=i;
     return b;
   }

   public static void main(String[] args) {

        Scanner in=new Scanner(System.in);

        int N=in.nextInt();
        long K=in.nextInt();
        long[] fact=factors(K);
        l1:
        for(int i=0;i<N;i++)
        {
            long num=in.nextInt();
            for(int j=0;j<fact.length;j++)
                if(num%fact[j]==0 && fact[j]!=1) {fact[j]=1;continue l1;}

        }
        int result=0;
        for(int i=0;i<fact.length;i++)
            if(fact[i]!=1) ++result;
        System.out.println(result);
    }
}

4 个答案:

答案 0 :(得分:1)

这不会编译,因为main方法不属于某个类。将main方法放在类中以解决问题。并且你的代码抛出算术异常divide by zero应该像那样修复。

for(int j=0;j<fact.length;j++)
  if (fact[j] != 0)
    if(num%fact[j]==0 && fact[j]!=1) {
      fact[j]=1;continue l1;
    }

答案 1 :(得分:1)

您的代码是正确的 - 它在ideone(link)上编译并运行良好。

您看到的问题与编译和运行应用程序的方式有关。在命令行提示符下,执行以下操作:

javac Solution.java

这将生成Solution.class个文件。按如下方式运行:

java Solution

此时正在运行的程序将读取输入并在控制台上生成输出。如果预期输入不可用,则会抛出异常,因为您在不检查nextInt的情况下调用hasInt,但如果您为其提供预期的输入,则会产生结果。

答案 2 :(得分:0)

  

编译程序时,我得到错误

     

无法找到主类:解决方案。程序将退出。

编译不需要任何主类:您可以独立编译帮助程序类。所以问题显然是你正在尝试运行一个尚未编译的类。例如,如果您使用的是命令行工具,那么当您打算运行java时,您最有可能正在运行javac

答案 3 :(得分:0)

Java编程模型中有 NO 独立函数;每个过程/函数必须是某个类的方法,包括static void main方法。