【问题标题】:Need help creating an invoice program using arrays需要帮助使用数组创建发票程序
【发布时间】:2015-12-03 16:33:39
【问题描述】:

我无法弄清楚我的代码应该放在哪里,同样在我的 if 循环中,它不允许我在第一个循环之后输入更多公司名称。

分配4:

import java.util.Scanner;

public class Assign4 {

    private static int invoice;

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        OurDate date = new OurDate();
        Invoice inv = new Invoice();
        Ledger led = new Ledger();

        System.out.print("Enter the amount of monthly invoices: ");
        invoice = scan.nextInt();

        for(int i = 0; i < invoice; i++){

            System.out.println("\nEnter info for invoice number " + i);
            inv.setCompanyNameFromUser();
            inv.toString();
            inv.setBillAmountFromUser();
            inv.setDateFromUser();
            date.setDayFromUser();
            date.setMonthFromUser();
            date.setYearFromUser(); 
        }
    }
}

我们的日期:

import java.util.Scanner;

public class OurDate {

    private int day;
    private int month;
    private int year;
    Scanner scan = new Scanner(System.in);

    public OurDate(){
        day = 0;
        month = 0;
        year = 1900;
    }
    public void setDayFromUser(){
        System.out.print("Enter day : ");
        day = scan.nextInt();
    }
    public void setMonthFromUser(){
        System.out.print("Enter month : ");
        month = scan.nextInt();
    }
    public void setYearFromUser(){
        System.out.print("Enter year : ");
        year = scan.nextInt();
    }
    public String toString(){
        return null;

    }
}

发票:

import java.util.Scanner;

public class Invoice {

    private double billAmount;
    private String name;
    private OurDate dueDate;
    Scanner scan = new Scanner(System.in);

    public Invoice(){
        billAmount = 0;
    }
    public void setDateFromUser(){
        System.out.print("Enter invoice due date\n");
        //dueDate = scan.nextInt();
    }
    public void setCompanyNameFromUser(){
        System.out.print("Enter the company name : ");
        name = scan.nextLine();
    }
    public void setBillAmountFromUser(){
        System.out.print("Enter bill amount : ");
        billAmount = scan.nextDouble();
    }
    public String toString(){
        return name;

    }

}

账本:

import java.util.Scanner;

public class Ledger {

    private Invoice [] invoices;
    private int numInvoices;
    Scanner scan = new Scanner(System.in);

    public Ledger(){

    }
    /*public Ledger(int){

    }*/
    public void getInvoiceInfo(){
        System.out.println("Enter info for the invoice number 0\n");
    }
    public void printInvoiceInfo(){

    }
    public double calculateMonthBills(){
        return numInvoices;

    }   
}

【问题讨论】:

  • 什么是“if循环”?
  • 您应该说明您的代码在哪个特定步骤上失败了。然后你应该详细描述你是如何试图解决这个问题的。然后,您应该描述该解决方案不起作用的地方。然后,您应该提出一个具体且可回答的问题。

标签: java arrays invoice invoices


【解决方案1】:

正如 Manos Nikolaidis 提到的链接所示,您需要调用 #nextLine() 以跳过 Invoice 对象中包含的 Scanner 对象上的 #readInt() 之后的 \n。

下面的修改代码应该可以解决您的问题。

import java.util.Scanner;

public class Assign4 {

    private static int invoice;

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        OurDate date = new OurDate();
        Invoice inv = new Invoice();
        Ledger led = new Ledger();

        System.out.print("Enter the amount of monthly invoices: ");
        invoice = scan.nextInt();

        for(int i = 0; i < invoice; i++) {

            System.out.println("\nEnter info for invoice number " + i);
            inv.setCompanyNameFromUser();
            inv.toString();
            inv.setBillAmountFromUser();
            inv.setDateFromUser();
            date.setDayFromUser();
            date.setMonthFromUser();
            date.setYearFromUser();
            inv.scan.nextLine(); // Need this line so \n is skipped
        }
    }
}

【讨论】:

    猜你喜欢
    • 2013-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-08
    • 1970-01-01
    • 2014-09-20
    • 1970-01-01
    相关资源
    最近更新 更多