3

编译程序时出现错误

找不到主类:解决方案。程序将会退出。

该程序是:

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

4 回答 4

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;
    }
于 2012-09-30T15:48:35.657 回答
1

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

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

javac Solution.java

这将产生Solution.class文件。运行如下:

java Solution

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

于 2012-09-30T15:51:54.683 回答
0

编译程序时出现错误

找不到主类:解决方案。程序将会退出。

编译不需要任何主类:您可以独立编译辅助类。所以问题显然是你试图运行一个你还没有编译的类。例如,如果您正在使用命令行工具,那么您很可能在您打算运行java时正在运行javac.

于 2012-09-30T15:51:00.000 回答
0

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

于 2012-09-30T15:51:32.593 回答