簡體   English   中英

錯誤:找不到主類

[英]Error: main class not found

編譯程序時,我得到錯誤

找不到主類:解決方案。 程序將會退出。

該計划是:

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

這將無法編譯,因為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;
    }

你的代碼是正確的 - 它在ideone( 鏈接 )上編譯並運行良好。

您看到的問題與編譯和運行應用程序的方式有關。 在命令行提示符下,執行以下操作:

javac Solution.java

這將生成Solution.class文件。 運行如下:

java Solution

此時,正在運行的程序將讀取輸入並在控制台上生成輸出。 如果預期的輸入不可用,它會拋出異常,因為你在沒有檢查hasInt情況下調用nextInt ,但如果你給它預期的輸入,它會產生一個結果。

編譯程序時,我得到錯誤

找不到主類:解決方案。 程序將會退出。

編譯不需要任何主類:您可以獨立編譯幫助程序類。 所以問題顯然是你正在嘗試運行一個尚未編譯的類。 例如,如果您正在使用命令行工具,那么當您打算運行javac時,最有可能運行java

Java編程模型中沒有獨立的函數; 每個過程/函數必須是某個類的方法,包括static void main方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM