可能重复:
Causes of 'java.lang.NoSuchMethodError: main Exception in thread “main”'
我希望这只是一个简单的错误,我已经查找了许多其他人获得相同错误消息的瞬间,但他们的解决方案似乎都没有真正适用于我。我只是想知道你们是否可以帮我找到代码中的错误。我甚至不确定它是否正常运行,因为我无法运行它,所以我认为它可能是一个逻辑错误。
当我尝试运行以下冷时,我遇到致命异常错误。程序将会退出。
Eclipse也给了我: java.lang.NoSuchMethodError:main 线程“main”中的异常
非常感谢您提供的任何帮助!
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class JoPuzzle
{
public static Integer main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.println("Please enter the number of soliders");
int soldiers = input.nextInt();
System.out.println("Please enter the how many soldiers are skipped before the next death");
int count = input.nextInt();
List<Integer> soldiersList = new ArrayList<Integer>(soldiers);
for (int i = 1; i <= count; i++) {
soldiersList.add(i);
}
int currentIndex = 0;
while(soldiersList.size() > 1) {
currentIndex = (currentIndex - 1 + count) % soldiersList.size();
soldiersList.remove(currentIndex);
}
return soldiersList.get(0);
} //end main
}//end class
答案 0 :(得分:2)
主要方法的签名是
public static void main(String [] args)。
当您运行程序时,JVM将查找此方法以执行。您需要在代码中使用此方法
答案 1 :(得分:1)
我们知道要执行任何java程序,我们应该有一个 main 函数。因为这是JVM可以自我调用的。 并且函数的签名必须是..
public static void main(String[] args){
}
但在您的代码中,它似乎就是这样......
public static Integer main(String[] args){
}
所以它被视为一个不同的函数,所以改变你的主要返回类型..
答案 2 :(得分:0)
您的程序不包含主要方法,请将其更改为
public static void main(String[] args)
如果要返回Integer对象,则定义自定义方法并在main方法中调用该方法并处理返回的值。
答案 3 :(得分:0)
Java main()
函数没有return语句。这一行
public static Integer main(String[] args)
应该是
public static void main(String [] args)
此外,由于它没有返回值,您应该删除return
语句。
答案 4 :(得分:0)
Java's main method应低于签名。
public static void main(String[] args){
..
..
}
答案 5 :(得分:0)
尝试运行此代码并告知它是否有效。
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class JoPuzzle
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.println("Please enter the number of soliders");
int soldiers = input.nextInt();
System.out.println("Please enter the how many soldiers are skipped before the next death");
int count = input.nextInt();
List<Integer> soldiersList = new ArrayList<Integer>(soldiers);
for (int i = 1; i <= count; i++) {
soldiersList.add(i);
}
int currentIndex = 0;
while(soldiersList.size() > 1) {
currentIndex = (currentIndex - 1 + count) % soldiersList.size();
soldiersList.remove(currentIndex);
}
// return soldiersList.get(0);
System.out.println(soldiersList.get(0));
} //end main
}//end class