我遇到的问题是这个程序中的最后一个方法。我无法让它执行正确执行所需的消息。 最后一个方法,displayData需要在方法中显示带有getLength,getWidth和getArea变量的消息,而不是main。我该怎么做才能显示变量?
//Gabby
import java.util.Scanner;
public class AreaRectangle
{
public static void main(String[] args)
{
double length = getLength();
double width = getWidth();
double area = getArea(length, width);
displayData(double l, double w, double a);
}
public static double getLength()
{
Scanner keyboard = new Scanner(System.in);
double l;
System.out.print("Please enter a value for length: ");
l = keyboard.nextDouble();
return l;
}
public static double getWidth()
{
Scanner keyboard = new Scanner(System.in);
double w;
System.out.print("Please enter a value for width: ");
w = keyboard.nextDouble();
return w;
}
public static double getArea(double length, double width)
{
double a;
a = length * width;
return a;
}
public static void displayData(l, w, a)
{
System.out.print("Length is: " + l);
System.out.print("Width is: " + w);
System.out.print("Area is: " + a);
}
}
错误讯息:
----jGRASP exec: javac -g AreaRectangle.java
AreaRectangle.java:11: error: '.class' expected
displayData(double l, double w, double a);
^
AreaRectangle.java:11: error: ';' expected
displayData(double l, double w, double a);
^
AreaRectangle.java:11: error: <identifier> expected
displayData(double l, double w, double a);
^
AreaRectangle.java:11: error: not a statement
displayData(double l, double w, double a);
^
AreaRectangle.java:11: error: ';' expected
displayData(double l, double w, double a);
^
AreaRectangle.java:35: error: <identifier> expected
public static void displayData(l, w, a)
^
AreaRectangle.java:35: error: <identifier> expected
public static void displayData(l, w, a)
^
AreaRectangle.java:35: error: <identifier> expected
public static void displayData(l, w, a)
^
8 errors
----jGRASP wedge2: exit code for process is 1.
----jGRASP: operation complete.
答案 0 :(得分:1)
更一般地说,方法声明有六个组件,依次为:
<强> 1 即可。修改器 - 例如公共,私人和其他您将在稍后了解的内容。
<强> 2 即可。返回类型 - 方法返回的值的数据类型,如果方法未返回值,则返回void。
第3 即可。方法名称 - 字段名称的规则也适用于方法名称,但约定略有不同。
<强> 4 即可。括号中的参数列表 - 以逗号分隔的输入参数列表,以其数据类型开头,括起来 括弧, ()。如果没有参数,则必须使用空 括号中。
<强> 5 即可。一个例外列表 - 稍后将讨论。
<强> 6 即可。括在括号之间的方法体 - 方法的代码,包括局部变量的声明,就在这里。
在此处的方法声明中
public static void displayData(l, w, a){
您忘记应用通用规则的第4步
public static void displayData(double l, double w, double a){
注意:覆盖toString
方法
答案 1 :(得分:1)
当我们调用一个方法时,我们不指定参数类型,我们在主方法中传递值:左替换它: displayData(double l,double w,double a);
由此: displayData(长度,宽度,面积);
同时在显示数据方法声明中执行以下操作:
替换这个:
public static void displayData(l, w, a)
{
System.out.print("Length is: " + l);
System.out.print("Width is: " + w);
System.out.print("Area is: " + a);
}
由此:
public static void displayData(double l, double w, double a)
{
System.out.print("Length is: " + l);
System.out.print("Width is: " + w);
System.out.print("Area is: " + a);
}
主要方法是静态的,当你把代码放入其中时,main方法中调用的所有外部成员都必须是静态的,最好的方法是这样的:
import java.util.Scanner;
public class AreaRectangle {
public AreaRectangle() {
//Call all methods you want
double length = getLength();
double width = getWidth();
double area = getArea(length, width);
displayData(length, width, area);
}
public double getLength() {
Scanner keyboard = new Scanner(System.in);
double l;
System.out.print("Please enter a value for length: ");
l = keyboard.nextDouble();
return l;
}
public double getWidth() {
Scanner keyboard = new Scanner(System.in);
double w;
System.out.print("Please enter a value for width: ");
w = keyboard.nextDouble();
return w;
}
public double getArea(double length, double width) {
double a;
a = length * width;
return a;
}
public void displayData(double l, double w, double a) {
System.out.print("Length is: " + l);
System.out.print("Width is: " + w);
System.out.print("Area is: " + a);
}
public static void main(String[] args){
new AreaRectangle();
}
}
请记住,在静态上下文(主要方法)中,您只能调用静态成员
如果您这样做,则不需要在所有类成员中使用static关键字。祝你好运。
答案 2 :(得分:0)
不要传递它们的类型,只传递变量名。
public static void main(String[] args)
{
double length = getLength();
double width = getWidth();
double area = getArea(length, width);
displayData(length, width, area);
}
displayData()
的签名应改为:
public static void displayData(double l, double w, double a);
答案 3 :(得分:0)
您需要调用displayData(length, width, area);
之类的方法,并将其定义为public static void displayData(double l, double w, double a) {...}
答案 4 :(得分:0)
public static void displayData(l, w, a)
在java中,您需要为方法中的每个参数提供一个类型,这不是JavaScript:)
答案 5 :(得分:0)
以下是错误。方法签名未正确定义。
1。)displayData(length, width, area);
2。)public static void displayData(double l, double w, double a) {
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 = new Scanner(System.in);
double l;
System.out.print("Please enter a value for length: ");
l = keyboard.nextDouble();
return l;
}
public static double getWidth() {
Scanner keyboard = new Scanner(System.in);
double w;
System.out.print("Please enter a value for width: ");
w = keyboard.nextDouble();
return w;
}
public static double getArea(double length, double width) {
double a;
a = length * width;
return a;
}
public static void displayData(double l, double w, double a) {
System.out.print("Length is: " + l);
System.out.print("Width is: " + w);
System.out.print("Area is: " + a);
}
答案 6 :(得分:0)
将您的方法更改为此
public static void displayData(double l, double w, double a)
{
System.out.print("Length is: " + l);
System.out.print("Width is: " + w);
System.out.print("Area is: " + a);
}
然后在你的主要做这个
displayData(length, width, area);
答案 7 :(得分:0)
您的正式参数和实际参数混在一起。 形式参数包含每个参数的类型,而实际参数是您传递的实际值。
当您调用方法时,需要实际参数(类型可以省略)。因此:
displayData(double l, double w, double a);
应改为:
displayData(length, width, area);
定义方法时,使用形式参数。这样:
public static void displayData(l, w, a)
应更改以包含每个参数的类型:
public static void displayData(double l, double w, double a)