问题指出:
创建一个具有长度和宽度双属性的矩形类。默认构造函数应该将这些属性设置为1。提供计算矩形周长和面积的方法,以及两个数据字段的访问器和赋值器。length和width的mutator方法应该验证传入的数字是否大于0.0且小于20.0——如果不符合这些标准,就不应该更改字段的值。
在同一文件中编写一个驱动程序类来测试您的矩形类。它应该提示用户输入矩形的长度和宽度,然后打印出矩形的面积和周长。(使用赋值器来设置矩形的长度和宽度,而不是构造函数。
这是样本运行:样本运行
这是我目前掌握的代码:
import java.util.Scanner;
public class Driver{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.print("Enter length of rectangle:");
double height = input.nextDouble();
System.out.print("Enter width of rectangle:");
double width = input.nextDouble();
System.out.printf("Area: %f, Perimeter: %f", getArea(), getPerimeter());
}
public static class Rectangle {
private double height;
private double width;
public Rectangle(double wid, double high) {
height = high;
width = wid;
}
public void setHeight(double high) {
width = wid > 0.0 && wid < 20.0 ? wid : 0;
}
public void setWidth(double wid){
width = wid > 0.0 && wid < 20.0 ? wid : 0;
}
public double getArea() {
return height*width;
}
public double getPerimeter() {
return 2*(height + width);
}
}
}
我感谢任何帮助!错误
要调用类的方法,您应该有该类的实例。在这种情况下,您正在尝试访问ClassDriver
中的Rectangle
类的方法,这是不可能的。因此,您必须创建一个实例,即Rectangle
类的实例
Rectangle rect = new Rectangle();
然后您可以访问此实例的方法:
rect.getArea();
...
我建议阅读Java基础知识,例如在Java教程网站。
我注释了所有相关的部分,这样你就能明白为什么你的代码不工作了:
public class Driver {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Enter length of rectangle:");
double height = input.nextDouble();
System.out.print("Enter width of rectangle:");
double width = input.nextDouble();
Rectangle rect = new Rectangle(); // Create instance of Rectangle
rect.setHeight(height); // use mutators to set the values
rect.setWidth(width);
DecimalFormat df = new DecimalFormat("##.0#");
System.out.printf("Area: %s, Perimeter: %s", df.format(rect.getArea()), df.format(rect.getPerimeter()));
}
static class Rectangle {
private double height;
private double width;
// default constructor(=constrcutor without parameter) should set dimensions to 1
public Rectangle() {
height = 1.0;
width = 1.0;
}
// Define mutators
public void setHeight(double height) {
if (height > 0.0 && height < 20.0) {
this.height = height;
}
}
public void setWidth(double width) {
if (width > 0.0 && width < 20.0) {
this.width = width;
}
}
// Define accessors
double getHeight() {
return height;
}
double getWidth() {
return width;
}
public double getArea() {
return height * width;
}
public double getPerimeter() {
return 2 * (height + width);
}
}
}
那是因为那些方法不属于驱动类。它们属于矩形。首先实例化您的矩形,然后使用其方法:
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.print("Enter length of rectangle:");
double height = input.nextDouble();
System.out.print("Enter width of rectangle:");
double width = input.nextDouble();
Rectangle r = new Rectangle(width, height);
System.out.printf("Area: %f, Perimeter: %f", r.getArea(), r.getPerimeter());
}
此外,您的设置者完全混淆了。
public Rectangle(double wid, double high) {
// Your constructor didn't use validation
setWidth(wid);
setHeight(high);
}
public void setHeight(double high) {
// If you really want to have validation in your setter, that's the syntax, yours doesn't compile
height = high > 0.0 && high < 20.0 ? high : 0;
}
public void setWidth(double wid){
width = wid > 0.0 && wid < 20.0 ? wid : 0;
}
问题内容: 我正在尝试在hadoop 2.2.0上运行我的PDFWordCount映射减少程序,但出现此错误: 它说我的地图类未知。我在3个VM上有一个带有namenod和2个datanodes的集群。 我的主要功能是: 如果我使用以下命令运行jar: 正如我在上面看到的那样,它作为输出路径并给我错误,而我的主要功能却在运行。 我已经运行了一个简单的WordCount项目,该项目的主要功能与该主要
Android Studio(版本4.1.1)在我的xml布局文件中为使用onClick的视图显示警告(警告id: UsingOnClickInXml,平台的旧版本不正确支持解析Android:onClick)。当我运行代码检查器时,这些也会显示在lint警告中。Android Studio似乎没有使用我在build.gradle (app)文件中设置的minSdkVerion (16)。 以下是
总的来说,我对tomcat和JSP很陌生,我还搜索了无数其他问题,这些问题似乎有完全相同的问题,但没有一个能解决我的问题。 服务器结构包含(以及其他内容,如css文件和其他html资源)一个jsp文件和一个java类: jsp文件包含: Java 类的源文件如下所示: 现在,我(重新)启动tomcat服务器,用浏览器访问jsp文件,并得到以下错误消息: 无法编译 JSP 的类:在生成的 java
我有一个thymeleaf表单和Spring引导后端。我有一个model类,它的getters和setters名称有点不同。因此,当我要取那个模型并将它的字段作为表单输入字段时,Tymeleaf不能将它们识别为字段。 窗体适用于区域字段。但对Amt字段不起作用。如果我将isAmt()get方法更改为getIsAmt(),也许我可以修复这个问题。但是我不能更改模态类的任何方法名,因为这个类已经编译好
问题内容: 我通过清单中的“导出向导”导出了我的eclipse插件,似乎一切进行得很好(没有错误)。它在zip文件的插件目录中创建了一个.jar文件。 我以为将jar放入我的Eclipse插件目录中将进行安装(在重新启动eclipse之后),但这没有用。Eclipse看不到插件(透视图未显示) 我尝试使用“帮助”->“安装新软件”->“本地存档”,但始终显示“找不到软件” 您能帮我准备好将插件安装
我有以下JSON: 我正试图用杰克逊把它转换成pojo。这就是我所拥有的: 我的另一个类有字段,这些字段被命名为JSON中的元素,并具有getter和setter。 上面的代码可以工作,但是当我只是创建一个没有配置的基本ObjectMapper对象时,它不起作用。这是为什么?这是堆栈跟踪错误: 这是我的pojo类,包含getter和setter: