【问题标题】:No main type error in javajava中没有主要类型错误
【发布时间】:2014-12-01 15:08:11
【问题描述】:

这是源代码:

package feetToInches2;

public class Feet2Inches {
    private double feetToInches_(double feet) {
        return 12* feet;    
    } 

    private int max(int val1 int val2) {
        if (val1 > val2) {
        } else {
            return (val2);
        }
        return 0;
    }
}

当我尝试运行它时,它显示“选择不包含主要类型”。我问过我的教授,他说有时 eclipse 会这样做,我需要做的就是重新启动计算机。这是真的吗?

【问题讨论】:

  • java程序的入口点是什么?
  • 您缺少“public static void main(String ... args)”方法。
  • 正如消息所说,您错过了方法名称 main public static void main(String[] args) {
  • 你说的Selection在哪里?
  • 您没有在类中定义 main()。当您运行 java 应用程序时,JVM 正在寻找 main() 来运行应用程序。定义 main() 并运行应用程序。此外,您还没有定义 if 的主体。

标签: java


【解决方案1】:

你需要的是一个主要的方法。这是一个入口点

public static void main(String[] args) {
        //Your code here
}

在你的情况下,它可能看起来像:

package feetToInches2;


public class Feet2Inches {
    public double feetToInches_ (double feet) {
        return 12* feet;    
    } 

    public int max(int val1, int val2) {
        if (val1 > val2) {
            return (val1);
        } 
        else {
            return (val2);
        }
    }
    public static void main(String[] args) {
        Feet2Inches converter=new Feet2Inches();
        int max = converter.max(100,50);
        double inches = converter.feetToInches_(10.5);
        System.out.println("Max value = " + max);
        System.out.println("Inches = " + inches);
    }

}

我已经改变了你的方法修饰符,所以它会更有用。没有公共方法的类是不需要的类;)我还修复了您代码中的一些错误。

编辑:

如果您想让人们使用您的代码进行自己的计算,您有两种选择。您可以从 args 数组中获取参数,该数组包含程序运行时使用的参数。或者您可以在运行时提示输入数据。

1 使用参数

public static void main(String[] args) {
    Feet2Inches converter = new Feet2Inches();
    if (args.length != 3) {
        System.err.println("Missing arguments! give me three numbers");
        System.exit(1);//error exit
    }
    int val1 = Integer.valueOf(args[0]);
    int val2 = Integer.valueOf(args[1]);
    double val3 = Double.valueOf(args[1]);
    int max = converter.max(val1, val2);
    double inches = converter.feetToInches_(val3);
    System.out.println("Max value from (" + val1 + "," + val2 + ")= " + max);
    System.out.println(val3 + "Feet = " + inches + " inches");
}

现在您必须使用参数Here 调用您的程序,您可以从 cmd 中查看如何执行此操作,Here 是在 Eclipse 中执行此操作的方法

2 在运行时询问用户参数

public static void main(String[] args) {
    Feet2Inches converter = new Feet2Inches();
    Scanner input = new Scanner(System.in);
    System.out.print("Argument 1:");
    int val1 = input.nextInt();
    System.out.print("Argument 2:");
    int val2 = input.nextInt();
    System.out.print("Argument 3:");
    double val3 = input.nextDouble();
    int max = converter.max(val1, val2);
    double inches = converter.feetToInches_(val3);
    System.out.println("Max value from (" + val1 + "," + val2 + ")= " + max);
    System.out.println(val3 + "Feet = " + inches + " inches");
}

【讨论】:

  • 所以我复制并尝试运行您编写的代码,但它对 max 和 inches 说“未使用局部变量 max 的值”
  • 是的,没错。我将你的函数的结果分配给了一个局部变量,但正如你所看到的,我对它们做的不多。接下来要做什么取决于您。例如,您可以在屏幕上显示这些结果。我会更新我的答案,这样你就可以看到它是如何工作的。 “未使用局部变量 max 的值”不是错误,它只是警告说某些东西是无缘无故创建的。如果您必须调用一个方法,该方法返回一些值,而您不需要它(您只需要方法内部发生的事情),那么只需忽略返回值,并且不要将其分配给任何变量。
  • 非常感谢。例如,我想让某人输入他自己的号码,它会为他转换它。就像他可以输入英寸值并将其转换为英尺的字段一样。当我运行您的代码时,这是在控制台中编写的:最大值 = 100 英寸 = 126.0 但我无法编辑这些字段。对不起,我只是 Java 的初学者。很抱歉有任何愚蠢的问题。
【解决方案2】:

为了运行 Java 应用程序,您始终需要定义 public static void main(String[] args) 方法。此方法应包含您需要执行的任何代码。

【讨论】:

  • 我应该把它放在我的代码中的什么位置。我在公开课 Feet2Inches 之后尝试过,但它不起作用。它总是给出错误。
  • 它应该在 Feet2Inches 类中,甚至可以在一个完全不同的类中。
【解决方案3】:

这是错误的

private int max(int val1 int val2)

应该是

private int max(int val1, int val2)

除此之外,您还有一个public static void main(String[] args) {,您可以从中调用您的方法。

【讨论】:

    猜你喜欢
    • 2013-02-18
    • 2017-09-16
    • 1970-01-01
    • 1970-01-01
    • 2021-08-16
    • 1970-01-01
    • 2012-07-15
    • 2013-12-25
    • 1970-01-01
    相关资源
    最近更新 更多