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

如何修复java中抽象类的运行时错误并删除double?

濮阳和泰
2023-03-14

我的程序要求定义一个抽象类,其中包含:

  • 3个受保护的实例变量:top↓(类型为java.awt.Point),宽度(类型为int)和高度(类型为int)
  • 一个默认的(或"no-参数"或"no-arg")构造函数,它用默认值构造一个形状:top↓=(0,0),宽度=0,高度=0
  • 一个重载构造函数,它用给定的值构造一个形状。
  • 一个重写的toString()方法,它以(x, y)宽x高的格式返回实例的字符串描述
  • 访问器和突变器方法:getX(),getY(),setX(),setY(),getHeight()...
    • 在X方向移动左上角点1,在y方向移动2的移动()方法
    • 一种抽象的绘制方法,通过形状的位置、宽度和高度来"绘制"形状。

    我尝试把"int"而不是双,但有一个错误说不能转换。

    到目前为止,这项工作已经完成

          import java.awt.*;
    
          abstract class SimpleMovingShape {
    
             protected Point topLeft;
             protected int width;
             protected int height;
    
             public SimpleMovingShape() {
                topLeft = new Point(0, 0);
                width = 0;
                height = 0;
             }
    
    
            public SimpleMovingShape(Point topLeft, int width, int height) {
                this.topLeft = topLeft;
                this.width = width;
                this.height = height;
             }
    
            public double getX() {
                return topLeft.getX();
            }
    
            public double getY() {
                return topLeft.getY();
           }
    
            public void setX(double x) {
                topLeft.setLocation(x, topLeft.getY());
            }
    
            public void setY(double y) {
                topLeft.setLocation(topLeft.getX(), y);
            }
    
            public void move() {
                topLeft.setLocation(getX() + 1, getY() + 2);
            }
    
            public int getHeight() {
                return height;
           }
    
            public int getWidth() {
                return width;
           }
    
            public void setHeight(int height) {
                this.height = height;
           }
    
            public void setWidth(int width) {
                this.width = width;
           }
    
           public void setTopLeft(Point topLeft) {
               this.topLeft = topLeft;
           }
    
           public Point getTopLeft() {
               return topLeft;
           }
    
           public abstract void draw();
    
           @Override
           public String toString() {
               return "(" + getX() + "," + getY() + ") " + getWidth() + " X " 
               + getHeight();
          }
          }
    

    测试人员

        SimpleMovingShape r2 = new SimpleMovingRectangle(new Point(10, 20), 
        20, 20);
        System.out.println(r2.getX());
        System.out.println(r2.getY());
    

    输出显示10.0 20.0,其中预期输出为10 20

    对于测试人员,这显示运行时错误SimpleMovingRectangle r1=new SimpleMovingRectangle();r1。移动();系统出来printf((%d,%d)”,r1。getX(),r1。getY())

       ***Runtime error***
       Exception in thread "main" java.util.IllegalFormatConversionException: 
       d != java.lang.Double
        at 
      java.util.Formatter$FormatSpecifier.failConversion(Formatter.java:4302)
        at 
      java.util.Formatter$FormatSpecifier.printInteger(Formatter.java:2793)
        at java.util.Formatter$FormatSpecifier.print(Formatter.java:2747)
        at java.util.Formatter.format(Formatter.java:2520)
        at java.io.PrintStream.format(PrintStream.java:970)
        at java.io.PrintStream.printf(PrintStream.java:871)
        at __Tester__.runTests(__Tester__.java:86)
        at __Tester__.main(__Tester__.java:80)
    

共有1个答案

宿嘉
2023-03-14
        public int getX() {
            double dbl = topLeft.getX().doubleValue();
            return (int) dbl;
        }

        public int getY() {
            double dbl = topLeft.getY().doubleValue();
            return (int) dbl;
       }

        public void setX(int x) {
            topLeft.setLocation(x, topLeft.getY());
        }

        public void setY(int y) {
            topLeft.setLocation(topLeft.getX(), y);
        }
 类似资料:
  • 我在运行时出错。我做错了什么? @开发人员C:\laragon\www\GestionBAT npm运行开发 @开发C:\laragon\www\GestionBAT 混合 这是一种可以融入的化学反应 npm错误!错误1 npm错误!@开发: npm错误!退出状态1 npm错误 npm ERR C:\Users\alexi\AppData\Roaming\npm-cache_logs\2021-0

  • 我在尝试运行程序时出现以下错误。这实际上是Hackerrank“第六天让我们回顾”挑战的提交。 线程“main”java中出现异常。util。java的NoTouchElementException。util。扫描仪。throwFor(Scanner.java:862)访问java。util。扫描仪。下一步(Scanner.java:1371)是解决方案。main(Solution.java:10

  • 当我尝试构建我的android应用程序时,我如何修复这个问题。我将实现'com.google.android.gms:play-services-ads:19.8.0'更新为实现'com.google.android.gms:play-services-ads:20.4.0',现在我得到了这个错误。 jetified-play-services-measurement-18.0.2-runtime

  • 我想创建应用程序,其中NavigationView和底部导航相互工作,但在输出中,我在“Run”中得到了下一个字符串 . 菜单 请帮帮我,我不知道如何修复这个错误)

  • 我正在尝试制作一个可滚动的选项卡,但当我在我的片段布局中设置一个视图时,应用程序开始出现错误,因为错误inflating类为空。它在未添加视图时工作,但当我在布局中添加视图时,它会给我错误。我也按此处给出的那样添加了类,但它不起作用。我如何在这里修复这个问题是我的片段代码 片段包名称为包com。实例尼莱。另一个盒子。碎片片段名称歌曲。我怎样才能解决这个问题?错误 D/dalvikvm:GC_并发释

  • 我试图创建象棋游戏,所以我为象棋工具创建抽象类(皇后,国王,车...)我还创建了king工具来检查我的代码: 并创建game_board类: 问题是,当我尝试向矩阵添加对象时,它的show me错误:1 IntelliSense:不允许抽象类类型“King”的对象:纯虚函数“chess_tool::legal_movement”没有覆盖器 ....