Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 不断收到我程序的错误代码,有人能看一下吗?_Java - Fatal编程技术网

Java 不断收到我程序的错误代码,有人能看一下吗?

Java 不断收到我程序的错误代码,有人能看一下吗?,java,Java,运行我的程序时,出现以下错误: Exception in thread "main" java.lang.Error: Unresolved compilation problem: at CylinderTest.main(Cylinder.java:42) 我相信有一个简单的解决方案,但我是一个经验不足的程序员,对我来说,它似乎应该工作 程序描述:编写一个名为CylinderTest.java的类并声明 三个圆柱体对象的数组,用于调用在中声明的方法 气缸类。确保从调用所有类方法 mai

运行我的程序时,出现以下错误:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 

at CylinderTest.main(Cylinder.java:42)
我相信有一个简单的解决方案,但我是一个经验不足的程序员,对我来说,它似乎应该工作

程序描述:编写一个名为CylinderTest.java的类并声明 三个圆柱体对象的数组,用于调用在中声明的方法 气缸类。确保从调用所有类方法 main()。让main()显示volume()返回的值并验证 手工计算的返回值(纸/笔)。提示用户 输入每个圆柱体对象的半径和高度值的步骤 在数组中

public class Cylinder 
{
  private double radius;
  private double height;
  public Cylinder(double radius, double height)
  {
      this.radius = radius;
      this.height = height;
  }
  public double getRadius()
  {
      return radius;
  }
  public double getHeight()
  {
      return height;
  }
  public double volume()
  {
      return radius*radius*height*3.1416;
  }


}

public class CylinderTest
{

public static void main(String[] args) 
{

    Cylinder[] myCylinder = new Cylinder[3];
    myCylinder [0] = new Cylinder (2,7);
    myCylinder [1] = new Cylinder (9,3);
    myCylinder [2] = new Cylinder (12,4);
    for (Cylinder c: myCylinder)
    {
        System.out.println("*******");
        System.out.println("Radius: " + c.getRadius());
        System.out.println("Height: " + c.getHeight());
        System.out.println("Volume: " + c.volume());
        System.out.println("*******");
    }
}
}   
线程“main”java.lang中出现异常。错误:未解析编译 问题:

位于CylinderTest.main(Cylinder.java:42)


由于
Cylinder.java
文件中第42行存在错误,无法编译您的类
Cylinder
,这是因为您在一个文件中有两个单独的公共类。将CylinderTest拆分为自己的文件。通常,使用目录结构分隔测试类是很有用的:

src
   main
      java
   test
      java
您还应该为Cylinder(比如)org.me创建一个包名

在这种情况下,两个类都应该有

package org.me;
在顶端


您应该使用IDE(如Eclipse或Netbeans),这会在您尝试运行它之前告诉您存在编译错误。一般来说,在有错误的情况下运行程序是一个糟糕的主意,并且通常很难知道发生了什么和发生了什么。但是Eclipse通常会提供一个stacktrace,它将链接到有问题的行。

Woot4Moo已经解释了异常的直接原因。基本上,您不能运行使用有编译错误的类的程序。在尝试运行程序之前修复所有编译错误:

  • 如果在Eclipse中访问该文件,则编译错误应标记为红色

  • 您可以将Eclipse配置为在工作区中存在编译错误时不允许运行代码

因为我们看不到实际的编译错误,所以我不能确定这一点。然而,我怀疑潜在的问题是,在一个文件(称为“cyland.java”)中有两个顶级
public
类。在Java中无法做到这一点。非嵌套的
public
类必须位于单独的源文件中。(使用“包私有”类可以避免这种情况,但这是一种不好的做法。)

修复方法是将Cylinder和CylinderTest类放在单独的源文件中


(理想情况下,您还应该添加包声明,但我猜您的讲师还没有向您解释。)

愚蠢的问题,但在运行eclipse时,有没有办法在代码左侧显示行号?@user1798926
“Windows”>“Preference”>“General”>“Editors”>“Text Editors”,请查看“显示行号”选项。
以及由于以下原因而进行的向下投票?谢谢您的指导,这将帮助我解决未来的问题。我的问题是创建一个单独的类文件,而不是尝试将它们合并。一个新手的错误。这是StackOverflow的一部分。我自己也犯了同样的错误!。注意,在我的回答中,我假设CylinderTest是测试框架的一部分(例如使用Junit)。如果org.junit.断言您得到的答案是您计算的答案,这将是一个有用的练习(请记住,您无法精确比较双倍-您需要包含一个小的误差范围)。谢谢大家,事实上,问题是一个简单的修复方法,只需在Eclipse中创建一个新类,而不是尝试将其合并到一个文件中。新手犯的错误。谢谢大家的帮助,非常感谢。请在此处查看接受的答案: