Java 我能';在继续下一个语句之前,我不明白为什么我的部分程序会循环4次

Java 我能';在继续下一个语句之前,我不明白为什么我的部分程序会循环4次,java,methods,return,arguments,void,Java,Methods,Return,Arguments,Void,结果: 输入矩形的宽度:3 输入矩形的长度:4 输入矩形的宽度:3 输入矩形的长度:4 输入矩形的宽度:3 输入矩形的长度:4 输入矩形的宽度:3 输入矩形的长度:4 宽度:3.0 长度:4.0 面积:12.0 这是因为您调用了四次getWidth()和getLength() 一旦从main, 从getArea一次, 一次从displayData(再次调用getArea) 每次调用getWidth()和getLength()都会从System.in中提示数据。你必须 获取一次长度和宽度并将其存储

结果:

输入矩形的宽度:3

输入矩形的长度:4

输入矩形的宽度:3

输入矩形的长度:4

输入矩形的宽度:3

输入矩形的长度:4

输入矩形的宽度:3

输入矩形的长度:4

宽度:3.0

长度:4.0

面积:12.0


这是因为您调用了四次
getWidth()
getLength()

一旦从
main

getArea
一次,
一次从
displayData
(再次调用
getArea

每次调用
getWidth()
getLength()
都会从
System.in
中提示数据。你必须

  • 获取一次长度和宽度并将其存储(可能在实例变量中)
  • 随后从存储它们的位置读取/获取

  • 尝试仅在main中调用displayData(),并删除其他调用。
    问题是displayData()本身会再次调用其他方法。

    我该怎么做?我试着将它存储在main中,但不知道如何从其他方法调用它。我建议您创建一个单独的类来保存这些值。如果没有,则将它们设置为静态,以便您可以从
    显示数据(在主类中)访问
    
    import java.util.Scanner;
    public class Main
    {
    
        public static void main(String[] args)
        {
            getWidth();
            getLength();
            getArea();
            displayData();
        }
            public static double getWidth()
            {
                System.out.print("Enter the width of the rectangle: ");
                Scanner keyboard = new Scanner(System.in);
                double width = keyboard.nextDouble();
                return width;
            }
    
            public static double getLength()
            {
                System.out.print("Enter the length of the rectangle: ");
                Scanner keyboard = new Scanner(System.in);
                double length = keyboard.nextDouble();
                return length;
            }
    
            public static double getArea()
            {
                double area = getWidth() * getLength();
                return area;
            }
            public static void displayData()
            {
                System.out.println("Width: " + getWidth() +
                                   "\nLength: " + getLength() +
                                   "\nArea: " + getArea());
            }
    
    }