从复制构造函数打印用户输入java

问题描述

我是Java新手,无法弄清楚如何使用副本构造函数。请忍受我。

我正在尝试获取运输包裹的信息。我正在尝试使用复制构造函数重复输入运输详细信息部分。

老实说,我不知道该怎么办。该代码对于一个程序包工作正常,没有错误-我只需要弄清楚如何提示用户输入第二个程序包即可。

import java.util.Scanner;

public class Package {
    
    private static double length = 1.0;
    private static double width = 1.0;
    private static double height = 1.0;
        
    private static double sum1 = length+width+height;
    
        public Package(Package p) {
        this.height = p.height;
        this.length = p.length;
        this.width = p.width;
            }
    
    
    public static void main(String[] args) {
        
        Scanner input = new Scanner(system.in);
        
        System.out.println("Enter package dimensions.\nEnter Length: ");
        length = input.nextDouble(); 
    
        System.out.println("\nEnter Width: ");
        width = input.nextDouble();
    
        System.out.println("\nEnter Height: ");
        height = input.nextDouble();

    
    
        System.out.println("Package 1: " + length + " X " + width + " X " + height + ",Volume = " + sum1);
    
    }
    
}

解决方法

您可以为此使用。类似下面的内容

B
,

我认为您的误解在于:

private static double sum1 = length+width+height;

该计算将在运行时执行此行时执行,因此在加载类时(因此,length = 1.0,width = 1.0,height = 1.0)。

如果要在设置长度,宽度和高度之后计算总和,则必须将计算结果放在一种方法中:

public static double sum() {
    return length+width+height;
}

在最后一行中调用此方法:

System.out.println("Package 1: " + length + " X " + width + " X " + height + ",Volume = " + sum())

还要注意,所有变量都是静态的,因此您实际上并没有将Package用作对象。为简单起见,您可以删除构造函数,除非您想了解Java对象,但是必须修改更多代码。

更新:这可行,但是每次使用复制构造函数时,我必须创建2个对象。说到开销。 数学:它不是总和,而是数量的乘积。

import java.util.Scanner;

public class Package {

    double length=1.0;
    double height=1.0;
    double width=1.0;
    double sum;
        
    public Package() {
    }
    
    public Package (Package p)
    {
        this.length = p.length;
        this.height = p.height;
        this.width = p.width;
        // to calculate the volume it's more like a product then a sum
        sum=length*height*width;
    }

    public static void main(String[] args) {
        
        Scanner input = new Scanner(System.in);
        for (int i=0;i<5;i++)
        {
            Package pack=new Package();
            
            System.out.println("Enter package dimensions.\nEnter Length: ");
            pack.length = input.nextDouble(); 
        
            System.out.println("\nEnter Width: ");
            pack.width = input.nextDouble();
        
            System.out.println("\nEnter Height: ");
            pack.height = input.nextDouble();
            
            Package p=new Package(pack);
            System.out.println("Package 1: " + p.length + " X " + p.width + " X " + p.height + ",Volume = " + p.sum);
        }
    }
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...