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 に答える