2012-09-30 163 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