可能重复:
';java.lang.NoSuchMethodError:线程“main"';
我希望这只是一个简单的错误,我已经查找了许多其他人收到相同错误消息的瞬间,但他们的解决方案似乎都不适用于我。我只是想知道你们是否可以帮助我在代码中找到错误。我甚至不确定它是否正常工作,因为我无法让它运行,所以我认为这可能是一个逻辑错误。
当我尝试运行以下感冒时,我遇到了致命的异常错误。程序将退出。
Eclipse还为我提供了:java.lang.NoSuchMethodError: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
我们知道,要执行任何java程序,我们都应该有一个main函数。因为这是JVM可自行调用的。函数的签名必须是.
public static void main(String[] args){
}
但在你的代码中似乎是这样的。。。
public static Integer main(String[] args){
}
因此它被视为一个不同的函数,因此更改您的主返回类型。。
main方法的签名是
public static void main(String[]args)。
当您运行程序时,JVM将查找要执行的方法。您需要在代码中使用此方法
您的程序不包含主方法,请将其更改为
public static void main(String[] args)
如果要返回Integer对象,请定义一个自定义方法,并在主方法内部调用该方法,然后处理返回的值。
main()
函数没有返回语句。这条线路
public static Integer main(String[] args)
应该是
public static void main(String [] args)
此外,由于它没有返回值,您应该删除return
语句。
Java的主方法应该具有以下签名。
public static void main(String[] args){
..
..
}
试着运行这段代码并判断它是否有效。
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