Попытка использовать переменную Instance из метода void (java) - PullRequest
0 голосов
/ 24 февраля 2020

В настоящее время я пишу код, который запрашивает размеры пакетов, а затем использует объем для расчета стоимости доставки. Есть еще один класс, который я не включил в пост, который обрабатывает калькуляцию. Я в настоящее время в растерянности, как принять ввод inputLength et c. методы и поместить их в методы Package и Package copy. А также почему я не могу использовать их в методах calcVolume и displayDimensions.

import java.util.Scanner;

public class Package {

    private double length;
    private double width;
    private double height;
    private Scanner input = new Scanner(System.in);

    public Package() {

        double length = 1.0;
        double width = 1.0;
        double height = 1.0;

    }

    public static void main(String[] args) {

        System.out.printf("Welcome to Colin's Shipping Calculator!%n%n");
        System.out.printf("Enter first package dimensions%n");

        Package volCalc;
        volCalc = new Package();
        volCalc.inputLength();
        volCalc.inputWidth();
        volCalc.inputHeight();

        System.out.printf("Enter second package dimensions%n");

        volCalc.inputLength();
        volCalc.inputWidth();
        volCalc.inputHeight();

        volCalc.displayDimensions();
        volCalc.calcVolume();
        Shipment shipCalc = new Shipment();
        shipCalc.inputPackage();
        shipCalc.inputPackage();
        shipCalc.calculateCost();
        shipCalc.display();



    }

    public Package(double length, double width, double height) {
        this.length = length;
        this.width = width;
        this.height = height;

    }

    public Package(Package copy) {

        Package newPackage = new Package();
        newPackage.length = copy.length;
        newPackage.width = copy.width;
        newPackage.height = copy.height;

    }

    public void inputLength() {
        System.out.printf("Enter Length: ");
        double length = input.nextDouble();


    }

    public void inputWidth() {
        System.out.printf("Enter Width: ");
        double width = input.nextDouble();

    }

    public void inputHeight() {
        System.out.printf("Enter Height: ");
        double height = input.nextDouble();

    }

    public void displayDimensions() {
        System.out.printf(length + " X " + width + " X " + height);

    }

    public double calcVolume() {
        double volume = length*width*height;
        System.out.printf("%nVolume: " + volume);

        return volume;

    }

1 Ответ

0 голосов
/ 24 февраля 2020

Вы скрываете переменные-члены, снова объявляя их в методах. Попробуйте удалить «double» перед именем переменной в функциях.

Вот пример. Я также изменил каждое выражение printf на print или println. Но я не уверен, как отгрузка должна работать.

import java.util.Scanner;

public class Package {

    private double length;
    private double width;
    private double height;
    private Scanner input = new Scanner(System.in);

    public Package() {
        this.length = 1.0;           // Removed 'double'
        this.width = 1.0;
        this.height = 1.0;
    }

    public static void main(String[] args) {
        System.out.println("Welcome to Colin's Shipping Calculator!\n");
        System.out.println("Enter first package dimensions");

        Package packageA;
        packageA = new Package();
        packageA.inputLength();
        packageA.inputWidth();
        packageA.inputHeight();

        packageA.displayDimensions();
        packageA.calcVolume();

        System.out.println("Enter second package dimensions");
        Package packageB = new Package();           // New Package

        packageB.inputLength();
        packageB.inputWidth();
        packageB.inputHeight();

        packageB.displayDimensions();
        packageB.calcVolume();

        Shipment shipCalc = new Shipment();
        shipCalc.inputPackage();
        shipCalc.inputPackage();
        shipCalc.calculateCost();
        shipCalc.display();
    }

    public Package(double length, double width, double height) {
        this.length = length;   //'this' needed else shadowing occurs
        this.width = width;
        this.height = height;
    }

    public Package(Package copy) {
        // Package newPackage = new Package(); Not needed
        this.length = copy.length;  // 'this' just for clarification.
        this.width = copy.width;
        this.height = copy.height;
    }

    public void inputLength() {
        System.out.print("Enter Length: ");
        length = input.nextDouble();    // Removed 'double'
    }

    public void inputWidth() {
        System.out.print("Enter Width: ");
        width = input.nextDouble();     // Removed 'double'
    }

    public void inputHeight() {
        System.out.print("Enter Height: ");
        height = input.nextDouble();    // Removed 'double'
    }

    public void displayDimensions() {
        System.out.println(length + " X " + width + " X " + height);
    }

    public double calcVolume() {
        double volume = length * width * height;
        System.out.println("Volume: " + volume);

        return volume;
    }
}
...