我的display()没有运行或显示我的println

时间:2015-11-03 05:00:00

标签: java methods while-loop println

我正在处理的程序目前运行成功,但它没有执行我的程序的一部分而且没有显示任何错误。

提示是: "创建一个声明Purchase对象的应用程序,并提示用户购买详细信息。当您提示发票编号时,请不要让用户继续操作,直到输入介于1000和8000之间的数字。当您提示销售金额时,请勿在用户输入非负数,销售金额和销售税之前继续。将文件另存为CreatePurchase.java."

import java.util.Scanner;

public final class CreatePurchase {
    static int invoiceNum; // I made these variables static because
    static double amount; // it fixed an error I was having with using
                            // non-static variables in a static field?

    double tax = .05;
    double totalamount;

    public static void main(String[] args) {
        Purchase completedPurchase = new Purchase();
        Scanner input = new Scanner(System.in);
        System.out
                .println("Please enter the invoice number! (Must be between 1000 and 8000!)");
        invoiceNum = input.nextInt();
        System.out
                .println("Please enter the amount of the sale! (Must be greater than 0!)");
        amount = input.nextDouble();

        while (invoiceNum < 1000 || invoiceNum > 8000) {
            System.out
                    .println("The invoice number you entered is invalid, try again!");
        }
        while (amount < 0) {
            System.out.println("The sale amount is invalid, try again!");
        }
    }

    public int getInvoiceNum(int invoiceNum) {
        return invoiceNum;
    }

    public double getAmount(double amount) {
        return amount;
    }

    public double getTotalAmount(double totalAmount) {
        return totalAmount;
    }

    public void setTotalAmount(double tax, double amount) {
        double totalAmount = (amount * tax);
    }

    public void display(int invoiceNum, double amount, double totalAmount) {
        System.out.println("Your invoice number is:" + invoiceNum + ".");
        System.out.println("Your sale amount is: " + amount + ".");
        System.out.println("Your sale amount after tax is: " + totalAmount
                + ".");
    }
}

我花了好几个小时试图找出我需要修复的内容才能使我的显示方法正常工作。程序运行成功,没有错误,所以我不确定甚至尝试修复什么。 (对不起,如果我的代码或问题没有意义。)

3 个答案:

答案 0 :(得分:0)

如果有机会,我会大量重构你的代码。首先,CreatePurchase类应该是简单的POJO(普通旧Java对象),包含发票号,购买金额和销售税的状态,以及用于访问和更改该状态的getter和setter方法。接下来,此类中的main()方法将实例化用于存储用户输入的CreatePurchase对象。我做的一个重大改变是代码如何处理用户输入。我的下面的代码使用两个while循环来轮询用户正确的发票号码(10008000之间)和金额(非负值),然后继续使用剩余的方法。最后,创建的CreatePurchase对象用于将结果输出到控制台。

public final class CreatePurchase {
    private int invoiceNum;
    private double amount;
    private double totalamount;

    // I am hard-coding the sales tax as 5%, as you did in your question,
    // though this code can easily be modified if you also want to input the tax
    private final double tax = .05;

    public int getInvoiceNum() {
        return invoiceNum;
    }

    public void setInvoiceNum(int invoiceNum) {
        this.invoiceNum = invoiceNum;
    }

    public double getAmount() {
        return amount;
    }

    public void setAmount(int amount) {
        this.amount = amount;
    }

    public double getTotalAmount() {
        return totalAmount;
    }

    public void setTotalAmount(double totalAmount) {
        this.totalAmount = totalAmount;
    }

    public static void main(String[] args) {
        CreatePurchase cp = new CreatePurchase();
        Scanner input = new Scanner(System.in);

        // these next two do-while loops will continue polling the user
        // until he enters a valid input
        do {
            System.out.println("Please enter the invoice number! (Must be between 1000 and 8000!)");
            invoiceNum = input.nextInt();
        } while (invoiceNum < 1000 || invoiceNum > 8000);

        cp.setInvoiceNum(invoiceNum);

        do {
            System.out.println("Please enter the amount of the sale! (Must be greater than 0!)");
            amount = input.nextDouble();
        } while (amount < 0);

        totalamount = amount*(1 + tax);
        cp.setAmount(amount);
        cp.setTotalAmount(totalAmount);

        // now use the CreatePurchase object to print out
        // details of the transaction
        System.out.println("Your invoice number is:" + cp.getInvoiceNum() + ".");
        System.out.println("Your sale amount is: " + cp.getAmount() + ".");
        System.out.println("Your sale amount after tax is: " + cp.getTotalAmount() + ".");
    }
}

答案 1 :(得分:0)

您声明了方法public void display(int invoiceNum, double amount, double totalAmount),但您从未实际使用它。

答案 2 :(得分:0)

尝试以下代码,这应该有帮助!

import java.util.Scanner;

public final class CreatePurchase {
    static int invoiceNum; // I made these variables static because
    static double amount; // it fixed an error I was having with using
                            // non-static variables in a static field?

    static double tax = .05;
    static double totalAmount;

    public void updatePurchase(final Purchase purchase) {
        Scanner input = new Scanner(System.in);
        System.out
                .println("Please enter the invoice number! (Must be between 1000 and 8000!)");
        invoiceNum = input.nextInt();

        if (invoiceNum < 1000 || invoiceNum > 8000) {
            System.out
                    .println("The invoice number you entered is invalid, try again!");
            updatePurchase(purchase);

        }
        System.out
                .println("Please enter the amount of the sale! (Must be greater than 0!)");
        amount = input.nextDouble();

        if (amount < 0) {
            System.out.println("The sale amount is invalid, try again!");
            updatePurchase(purchase);
        }

        setTotalAmount(tax, amount);

        display(invoiceNum, amount, getTotalAmount());

    }

    public static void main(String[] args) {
        Purchase completedPurchase = new Purchase();
        new CreatePurchase().updatePurchase(completedPurchase);
    }

    public int getInvoiceNum(int invoiceNum) {
        return invoiceNum;
    }

    public double getAmount(double amount) {
        return amount;
    }

    public double getTotalAmount() {
        return totalAmount;
    }

    public void setTotalAmount(double tax, double amount) {
        totalAmount = (amount * tax);
    }

    public void display(int invoiceNum, double amount, double totalAmount) {
        System.out.println("Your invoice number is:" + invoiceNum + ".");
        System.out.println("Your sale amount is: " + amount + ".");
        System.out.println("Your sale amount after tax is: " + totalAmount
                + ".");
    }
}