2012-09-30 168 views
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); 
    } 
} 
+0

向我们展示如何运行该程序。 –

+0

你用什么来编译这段代码?像Eclipse或Netbeans这样的IDE或者其他工具? –

+0

@LewsTherin @LewsTherin有效的Java语法,它就是所谓的“标签”(注意后面会出现'continue l1;'语句。 –

回答

1

这不会编译,因为main方法不属于一类。将main方法放入类中以解决问题。而你的代码是抛出算术异常​​应该像那样修复。

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

这就是我的想法,但它是在一个班级。有一个最后的括号。可怜的缩进是误导。 –

+1

主要方法是在类内解决方案。还是行不通 !! – harvish

+0

@harvish好了,我修正了错误 –

0

When compiling the program i get the error as

Could not find the main class: Solution. Program will exit.

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

0

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

1

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

您看到的问题与您编译和运行应用程序的方式有关。在命令行提示符下,做到这一点:

javac Solution.java 

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

java Solution 

此时正在运行的程序将读取输入并在控制台上生成输出。如果由于您拨打nextInt而未检查hasInt,它会引发异常,但如果您将其输入为期望的输入,则会产生结果。

+0

@它将永远不会产生结果,直到代码中的错误得到修复。 –

+0

@RomanC相同的代码在intellij思想中编译,但不编译thro终端。 – harvish

+0

@dasblinkenlight可以解释我怎么做来纠正错误?...把'hasInt'? – harvish