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

形状工具箱获取长度和宽度的输入并打印它们

陆博易
2023-03-14

我必须做一个形状工具箱,有一个正方形,矩形,圆形和三角形。基本上,用户输入形状,然后长度,高度,周长等,程序将输出形状本身,加上文字,表示长度,宽度,面积,周长等。我已经有了square类在一些帮助下,从你们这些了不起的人,现在我正在处理矩形类,遇到了一个问题。我将在这里发布我的主要方法和我的矩形类,我也将发布我的square类作为参考,因为它工作完美。我得到的是公共矩形框(int宽)。当square只有一个输入(长度)时,这对square非常有效,但我正在尝试如何在类中添加第二个输入(宽度),因为该类也需要这个参数。

import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.util.Scanner;
import javax.swing.JFrame;


public class Main {

    static int input;
    static int length;
    static int width;

    public static void main(String[] args) {

        Scanner sc1 = new Scanner(System.in);
        while(true) {
            System.out.print("\n1 for square\n2 for restangle\n3 for triangle\n4 for circle\n5 to exit\n\nWhich shape do you want? ");
            input = sc1.nextInt();
            if(input == (5)) {
                break;
            }
            if(input == (1)) {


                System.out.print("Input the length: ");
                length = sc1.nextInt();
                Square mySquare = new Square(length);

                JFrame frame = new JFrame();

                frame.setSize(300,400);
                frame.setTitle("ShapeViewer");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                frame.add(mySquare);
                frame.setVisible(true);}

            if(input==(2)) {


                System.out.print("Input the length: ");
                length = sc1.nextInt();
                System.out.print("Input the width: ");
                width = sc1.nextInt();
                Rectanglebox myRectangle = new Rectanglebox(length);

                JFrame frame2 = new JFrame();

                frame2.setSize(300,400);
                frame2.setTitle("ShapeViewer");
                frame2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                frame2.add(myRectangle);
                frame2.setVisible(true);
            }

            }


        }
    }
import java.util.Scanner;
import javax.swing.JComponent;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Rectangle;

public class Rectanglebox extends JComponent{

    private int length;
    private int width;

    public Rectanglebox(int length) {
        this.length = length;
    }

    public Rectanglebox(int width) {
        this.width = width;
    }

    public double getArea() {
        return length * width;
    }
    public double getPerimeter() {
        return (length * 2) + (width * 2);
    }

    public void paintComponent(Graphics g) {
        Graphics2D g2 = (Graphics2D)g;
        Rectangle square = new Rectangle(100,100,length,length);
        g2.draw(square);
        g2.drawString("Area: "+getArea(), 110, 110+length);
        g2.drawString("Perimeter: " + getPerimeter(), 200, 110+length);
        g2.drawString("Square", 110, 20);
        g2.drawString("Length: " +length, 10, 200+length);
        g2.drawString("Width" +width, 60, 200);

        g2.setColor(Color.black);
        g2.fill(square);
    }
}
import java.util.Scanner;
import javax.swing.JComponent;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Rectangle;

public class Square extends JComponent{

    private int length; 

    public Square(int length) {
        this.length = length;
    }

    public double getArea() {   
    return length * length;
    }
    public int getPerimeter() {
        return length * 4;
    }
    public void paintComponent(Graphics g) {
        Graphics2D g2 = (Graphics2D)g;
        Rectangle square = new Rectangle(50,50,length,length);
        g2.draw(square);
        g2.drawString("Area: "+getArea(), 110, 110+length);
        g2.drawString("Perimeter: " + getPerimeter(), 200, 110+length);
        g2.drawString("Square", 110, 20);
        g2.drawString("Length: " +length, 10, 110+length);
        g2.setColor(Color.black);
        g2.fill(square);
    }
}

我认为这里的主要问题是我实际上并不完全理解这句话在做什么,甚至我只知道它起作用。我的意思是,我知道它是一个接受并设置长度的构造函数,但我不理解它的限制,因为我不明白为什么我不能做另一个像它一样的width来接受width输入。

public Square(int length) {
        this.length = length;
    }

共有1个答案

丁翊歌
2023-03-14

不能使用具有相同参数的两个构造函数。您必须为矩形框创建第二个构造函数,类似于:

public Rectanglebox(int length, int width) {
  this.length = length;
  this.width = width;
}

在main.java中,您必须编写:

if(input==(2)) {
  System.out.print("Input the length: ");  
  length = sc1.nextInt();
  System.out.print("Input the width: ");
  width = sc1.nextInt();
  Rectanglebox myRectangle = new Rectanglebox(length, width);
 类似资料:
  • 本文向大家介绍C++实现读取图片长度和宽度,包括了C++实现读取图片长度和宽度的使用技巧和注意事项,需要的朋友参考一下 看到一个用ASP写的读取图片文件的长度、宽度的程序,感觉有点意思,于是用C++也写了一个。

  • 因此,我创建了一个简单的模拟,其中方块是随机产生的,随机向量和窗口边缘的反弹。 我希望它能考虑到正在调整的窗口大小。因此,如果我将窗口的尺寸从600x600改为1200x600,则新边框的方块将会弹出,而不是600x600。 我尝试执行getWidth()getHeight(),但它将返回0。因此,我将它放在pain()(因为它在window resize中被调用)方法中,并将返回值保存为局部变量

  • 我是JavaFX的新手,我正在编写一个简单的登录应用程序,我想在我的web浏览器中启动它。 我如何获得web浏览器的宽度和高度?是否有一些对象用于此目的,或一个方法,我希望能够调整应用程序的大小,每当浏览器的大小改变。

  • 我的目标是创建一个接受字符串的代码,以及每个单词允许的最小字符数。输出将是一个int,它告诉用户句子中超过或等于他们输入的最小值的单词数。 现在,我的方法是在main方法中将句子分解成单个单词,然后将每个单词发送到另一个计算字符数的方法中。 我在我的主要方法上遇到了困难,特别是把句子分解成单个单词。我想在不使用数组的情况下实现这一点,只使用循环、substring和indexOf等。我使用一个只有

  • 本文向大家介绍flex4获取当前窗口的长度与宽度的方法,包括了flex4获取当前窗口的长度与宽度的方法的使用技巧和注意事项,需要的朋友参考一下 之前为了实现flex网页自适应屏幕大小 看到网上的答案是 Application.application.width Application.application.height 但是这是适用于<mx:Applicationg/>的,在flex4后,建议适

  • 问题内容: 是否可以在node.js中获取图像的宽度和高度(在服务器端,而不是客户端)?我需要在我正在编写的node.js库中找到图像的宽度和高度。 问题答案: 是的,这是可能的,但是您需要安装GraphicsMagick或ImageMagick。 我都用过,我可以推荐GraphicsMagick,它要快得多。 一旦安装了程序及其模块,就可以执行以下操作来获取宽度和高度。