编译程序时,我得到错误
无法找到主类:解决方案。程序将退出。
该计划是:
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 :(得分: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;
}
答案 1 :(得分:1)
您的代码是正确的 - 它在ideone(link)上编译并运行良好。
您看到的问题与编译和运行应用程序的方式有关。在命令行提示符下,执行以下操作:
javac Solution.java
这将生成Solution.class
个文件。按如下方式运行:
java Solution
此时正在运行的程序将读取输入并在控制台上生成输出。如果预期输入不可用,则会抛出异常,因为您在不检查nextInt
的情况下调用hasInt
,但如果您为其提供预期的输入,则会产生结果。
答案 2 :(得分:0)
编译程序时,我得到错误
无法找到主类:解决方案。程序将退出。
编译不需要任何主类:您可以独立编译帮助程序类。所以问题显然是你正在尝试运行一个尚未编译的类。例如,如果您使用的是命令行工具,那么当您打算运行java
时,您最有可能正在运行javac
。
答案 3 :(得分:0)
Java编程模型中有 NO 独立函数;每个过程/函数必须是某个类的方法,包括static void main
方法。