我真正坚持的问题是:
编写一个程序,要求用户输入矩形的宽度和长度,然后显示矩形的区域。该程序应调用以下方法:
•getLength - 此方法应要求用户输入矩形的长度,然后将该值作为double返回。
•getWidth - 此方法应要求用户输入矩形的宽度,然后将该值作为double返回。
•getArea - 此方法应接受矩形的长度和宽度作为参数,并返回矩形的区域。该区域的计算方法是将长度乘以宽度。
•displayArea - 此方法应接受矩形的长度,宽度和区域作为参数,并将它们显示在屏幕上的相应消息中。
我不知道如何填写此代码,因为我现在拥有的是:
import java.util.Scanner;
public class WidthLengthAreaMethods
{
public static void main(String[]args)
{
Scanner keyboard = new Scanner(System.in);
double length;
double width;
double area;
length = getLength();
width = getWidth();
area = getArea(double length, double width);
displayData(length, width, area);
}
public static double getLength()
{
System.out.println("Enter length. ");
length = keyboard.nextDouble();
System.out.println("The length is " + length);
}
public static double getWidth()
{
double width;
System.out.println("Enter width. ");
width = keyboard.nextDouble();
System.out.println("The width is " + width);
}
public static double getArea()
{
double length;
double width;
double area = length * width;
System.out.println("The area is: " + area);
}
public static void displayData(double length, double width, double area)
{
System.out.println(" The length is: \t" + length);
System.out.println(" The width is: \t" + width);
System.out.println(" The area is: \t" + area);
}
}
我搞砸了什么,我将如何解决它?我是编程的初学者,请耐心等待:D。
谢谢你们!
答案 0 :(得分:2)
由于您的程序被分解为多个方法,因此每个方法中的数据都是本地的,除非您将其存储在类本身中。
例如,getLength()和getWidth()的辅助函数将无法访问键盘扫描程序,除非您在main方法之外声明它,如下所示:
import java.util.Scanner;
public class WidthLengthAreaMethods {
Scanner keyboard = new Scanner( System.in );
// Initialized within the class, but outside of any methods
public static void main( String[] args ) {
double length = getLength();
double width = getWidth();
double area = getArea( length, width );
displayData( length, width, area );
}
}
另一种方法是将扫描程序传递给函数调用中的每个辅助方法,例如
public static double getLength( Scanner keyboard ){}
将扫描程序单独传递给每个函数会使您的方法按预期工作,第一个选项稍微更具可读性。
要考虑的另一件事是,当一个方法有一个返回值时,例如getLength(),getWidth()和getArea()的情况下,调用该函数的代码片段需要一些变量要返回的那种类型。对于void函数(例如main()或displayData()),该方法声明它不会返回任何特定类型的变量。
因此,当您将length设置为等于getLength()时,您要做的是将本地长度变量的值设置为等于从辅助函数返回的值。如果永远不会发送该值,程序很可能无法编译 - 当您尝试调用该函数时,将会抛出一个错误,指出“预期类型为double”的行。要修复编译器错误,需要将一个return语句添加到辅助函数中,例如:
Scanner keyboard = new Scanner( System.in );
public static double getWidth() {
System.out.println("Enter width.");
double width = keyboard.nextDouble(); // Sets the value to return to your main function
System.out.println("The width is " + width);
return width; // Returns the value to your main function
// Causes any code underneath the return statement to be ignored
}
结合所有这些应该允许编译器错误停止,并使程序正常工作。
答案 1 :(得分:1)
这是工作解决方案
import java.util.Scanner;
public class WidthLengthAreaMethods {
public static void main(String[]args)
{
double length;
double width;
double area;
length = getLength();
width = getWidth();
area = getArea(length, width);
displayData(length, width, area);
}
public static double getLength()
{
Scanner keyboard = new Scanner(System.in);
System.out.println("Enter length. ");
double length = keyboard.nextDouble();
System.out.println("The length is " + length);
return length;
}
public static double getWidth()
{
Scanner keyboard = new Scanner(System.in);
double width;
System.out.println("Enter width. ");
width = keyboard.nextDouble();
System.out.println("The width is " + width);
return width;
}
public static double getArea(double length, double width)
{
double area = length * width;
System.out.println("The area is: " + area);
return area;
}
public static void displayData(double length, double width, double area)
{
System.out.println(" The length is: \t" + length);
System.out.println(" The width is: \t" + width);
System.out.println(" The area is: \t" + area);
}
}
答案 2 :(得分:1)
您必须创建class,getter和setter方法以使用类确定矩形区域。这是代码,
// this is class which gets and sets the value as well as calculate area
public class RectangleShape
{
private double length;
private double width;
public void setLength(double len)
{
length = len;
}
public void setWidth(double wid)
{
width = wid;
}
public double getLength()
{
return length;
}
public double getWidth()
{
return width;
}
public double getArea()
{
return length * width;
}
}
// main method
import java.util.Scanner;
public class FindArea
{
public static void main(String[] args)
{
RectangleShape rs = new RectangleShape();
Scanner sc = new Scanner(System.in);
System.out.println("Please enter the length : ");
double a = sc.nextDouble();
rs.setLength(a);
System.out.println("Please enter the width : ");
double b = sc.nextDouble();
rs.setWidth(b);
System.out.println("Length of rectangle is : " + rs.getLength());
System.out.println("Width of rectangle is : " + rs.getWidth());
System.out.println("Area of rectangle is : " + rs.getArea());
sc.close();
}
}