线程主错误中的异常

时间:2012-03-12 05:10:55

标签: java error-handling logic main

  

可能重复:
  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

6 个答案:

答案 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