当前位置: 首页 > 知识库问答 >
问题:

Java:没有编译错误,但我的输出是错误的

赫连坚
2023-03-14

我的任务是创建一个名为MyRectangle的类来表示矩形。

所需的数据字段是宽度、高度和颜色。宽度和高度使用双数据类型,颜色使用字符串。然后编写一个程序来测试MyRectangle类。在客户端程序中,创建两个MyRectangle对象。为两个对象中的每一个指定宽度和高度。将第一个对象指定为红色,将第二个对象指定为黄色。显示两个对象的所有属性,包括其面积。

我已经写了所有的东西,没有错误,但是无论我为矩形输入什么值,我的输出都保持不变。

package MyRectangle;

public class MyRectangle{

  private double width = 1.0;
  private double height = 1.0;
  private static String color = "black";

    public MyRectangle(double par, double par1){ 

      width ++;
      height ++;

  }

    //Parameters for width, height, and color //

    public MyRectangle(double widthParam, double heightParam, String colorParam){ 

      width = widthParam;
      height = heightParam;
      color = colorParam;
      width ++;
      height ++;

  }

    // Accessor width //

  public double getWidth(){

  return width;

  }

  public void setWidth(double widthParam){

  width = (widthParam >= 0) ? widthParam: 0;

  }

  // Accessor height //

  public double getHeight(){

  return height;

  }

  public void setHeight(double heightParam){

  height = (heightParam >= 0) ? heightParam: 0;

  }

  // Accessor color //

  public static String getColor(){

  return color;

  }  

  public static void setColor(String colorParam){

  color = colorParam;

  }

  // Accessor area //

  public double findArea(){

  return width * height;

  }

}

class MyRectangleTest {

        @SuppressWarnings("static-access")
        public static void main(String args[]) {

  // Create triangle and set color value to red //          

  MyRectangle r1 = new MyRectangle(5.0, 25.0);
  r1.setColor("Red");

  System.out.println(r1);
  System.out.println("The area of rectangle one is: " + r1.findArea());

  // Create triangle and set color value to yellow //

  MyRectangle r2 = new MyRectangle(3.0, 9.0);
  r2.setColor("Yellow");

  System.out.println(r2);
  System.out.println("The area of rectangle one is: " + r2.findArea());

        }
}

共有2个答案

颛孙正卿
2023-03-14

这里有几个问题:

  1. 颜色成员是静态,这意味着in属于类,而不是每个实例都有自己的。
  2. (双精度,双精度)构造函数不存储高度和宽度。
  3. 两个构造函数都无缘无故地增加高度和宽度。
  4. 由于您没有默认构造函数,因此成员的默认值是多余的-没有不会被覆盖的流。

综上所述,您的类或多或少应该这样声明:

public class MyRectangle {

  private double width;
  private double height;
  private String color;
  private static final String DEFAULT_COLOR = "black";

    public MyRectangle(double width, double height) { 
      this (width, height, DEFAULT_COLOR);
    }

    public MyRectangle(double width, double height, String color) { 
      this.width = width;
      this.height = height;
      this.color = color;
  }

  // Rest of the required methods
}
席言
2023-03-14

您使用的构造函数毫无意义。

忽略传递的矩形尺寸,因此始终会得到一个2乘2的矩形:

  private double width = 1.0;
  private double height = 1.0;
  ...

    public MyRectangle(double par, double par1){

      width ++;
      height ++;

  }

它应该是这样的:

  public MyRectangle(double width, double height){

      this.width = width;
      this.height = height;

  }

此外,颜色成员不应该是静态的,除非您希望所有矩形具有相同的颜色。

最后一件事-为了系统。出来println(r1) 和<代码>系统。出来println(r2)要显示这两个对象的所有属性,必须重写toString():

@Override
public String toString()
{
    return "width = " + width + " height = " + height + " color = " + color;
}
 类似资料:
  • 我使用IntelliJ进行java开发。我想在我只有shell访问权限的另一台主机上运行我的应用程序。 当我在本地运行应用程序时,一切都很好。当我尝试在远程主机上编译代码时,我得到: 文件位于同一目录中: 我也不能在本地编译,除非它来自IDE,所以我假设我只是没有做正确的事情。我错过了什么?我只想能够从shell运行我的应用程序,我真的不在乎如何运行。

  • 我正在与ATM案例研究一起工作,从Deitel java如何编程第9版。 案例研究在第13章,第546页(万一有人有这本书并想要查看),我确信我的代码是100%如书中所建议的那样。 我已经设置了所有的代码,但当我尝试运行程序时,它给了我以下信息: 当我试图从类路径使用terminal编译类时,它给出了以下错误: 这是正在进行的课程:直截了当地往前走,但我似乎找不到问题所在。有人帮忙吗?

  • 我试图做一个java程序,但我有一个问题与输出。

  • 问题内容: 我无法更改程序的外壳,最终目标是从txt文件中的单词列表中选择一个随机单词。我已经浏览了很多次,一次又一次地检查了代码,尝试了许多不同的事情,但是每次我运行它时,它都可以毫无问题地进行编译,但是我从未得到任何输出。我什至尝试在私有函数中插入一些输出,但无济于事。谁能看到我的代码有什么问题或可以向我解释发生了什么? 问题答案: 构造函数扫描器(字符串源)实际上解析源字符串的内容,而不是将

  • 即时创建一个小电子邮件脚本与PHPMailer SMTP身份验证。我现在试着用错误的密码发送一封电子邮件——但它仍然会给成功带来“真实”的回报...有人知道吗?' 以下是我用来调用sendmail的函数: 这是我的PHPMailer函数 $smtp包含一个数组,其中包含所有SMTP信息、电子邮件地址、签名、Smtp服务器、端口、用户名、密码和SSL用法... 我敢肯定,我使用了错误的用户名和密码,

  • 我写了下面提到的一个简单的java程序。不幸的是,编译错误发生了。 在编译过程中,在命令提示符下会显示以下内容: c:\Java 它对我的任何程序都不起作用,即使是这个简单的程序也不行!这是为什么? 编辑: 现在我有: 而且它不起作用。为什么不起作用? 它说的和以前一样。 你对Java所说的。lang.String[]有效,但为什么不能呢?为什么我以前不需要穿上这些?