在我的应用程序中使用默认和非默认构造函数

约翰逊

我是java的新手,并且有一个关于默认和非默认构造函数的问题。我的教授希望我们使用默认构造函数创建对象BOOK1,然后对BOOK2,BOOK3和BOOK4使用非默认构造函数。我知道构造函数用于对象的创建,但是我想我不明白如何区分两者。我的课程代码如下,其中我既有默认构造函数又有非默认构造函数:

import java.text.DecimalFormat;

public final class BOOKItem {

    DecimalFormat intFormat = new DecimalFormat("000");
    DecimalFormat doubleFormat = new DecimalFormat("$#,##0.00");

    private int bookID;
    private int numberInStock;
    private double price;
    private double totalValueOfStock;
    private int code;
    private String genre = "";

    public BOOKItem() {
        bookID = 0;
        numberInStock = 0;
        price = 0;
        code = 0;
    }

    public BOOKItem(int newID, int newStock, double newPrice, int newCode) {

        setID(newID);
        setStock(newStock);
        setCode(newCode);
        setPrice(newPrice);


    }

    public void setStock (int newStock) {

        if (newStock >= 1 && newStock <=5000) {
            numberInStock = newStock;
        }
         else {
            numberInStock = 0;
        }
  }

public void setCode (int newCode) {

    if (newCode > 0) {
        code = newCode;
    }
}

public void setID (int newID) {
    if (newID >=11 && newID <= 111111) {
        bookID = newID;
    }
    else {
        bookID = 0;
    }
    }

public void setPrice (double newPrice) {
    if (newPrice >= 1.0 && newPrice <=150.0) {
        price = newPrice;
    }
    else {
        price = 0;
    }
}

public int getID () {

return bookID;

}

public int getNumberInStock () {
    return numberInStock;
}

public int getCode () {
    return code;
}

public double getPrice () {
    return price;
}

public double calcTotalValue () {
    totalValueOfStock = numberInStock * price;
    return totalValueOfStock;
}

public double getTotalValue () {
    return totalValueOfStock;
}

   public void display() {
       switch (code)
    {   
       case 1:               
         genre = "Romance";
           break;
       case 2: 
         genre = "Adventure";
           break;
       case 3:
         genre = "Sci-Fi";
           break;
       case 4:
         genre = "Mystery";
           break;
    }               
   System.out.println("Display:");
   System.out.println("Book ID: " + bookID + " NumInStock: " + numberInStock + " Code: " + genre + " Price: " + 
                      price + " TotalStockValue: " + calcTotalValue());
   }



}

这是我的使用构造函数的应用程序(对类代码中的中断感到抱歉,我不知道为什么这样做):

import java.util.Scanner;

public class Project7 {

public static void main(String[] args) {

    int bookID;
    int numberInStock;
    double price;
    int code;

    Scanner keyboard = new Scanner(System.in);

    BOOKItem BOOK1, BOOK2, BOOK3, BOOK4;
    BOOK1 = new BOOKItem();
    BOOK2 = new BOOKItem();
    BOOK3 = new BOOKItem();
    BOOK4 = new BOOKItem();

    System.out.println("Enter in a blank separated list: ID, number in stock, quality, price" + 
                       "- use a BAD ID(<11 or >111111)");

    bookID = keyboard.nextInt();
    numberInStock = keyboard.nextInt();
    code = keyboard.nextInt();
    price = keyboard.nextDouble();

    BOOK1.setID(bookID);
    BOOK1.setStock(numberInStock);
    BOOK1.setCode(code);
    BOOK1.setPrice(price);
    BOOK1.display();

    System.out.println("Enter in a blank separated list: ID, number in stock, quality, price" + 
                       "- use a BAD STOCK(>5000)");

    bookID = keyboard.nextInt();
    numberInStock = keyboard.nextInt();
    code = keyboard.nextInt();
    price = keyboard.nextDouble();

    BOOK2.setID(bookID);
    BOOK2.setStock(numberInStock);
    BOOK2.setCode(code);
    BOOK2.setPrice(price);
    BOOK2.display();

    System.out.println("Enter in a blank separated list: ID, number in stock, quality, price" + 
                       "- use a BAD PRICE(>150.0)");

    bookID = keyboard.nextInt();
    numberInStock = keyboard.nextInt();
    code = keyboard.nextInt();
    price = keyboard.nextDouble();

    BOOK3.setID(bookID);
    BOOK3.setStock(numberInStock);
    BOOK3.setCode(code);
    BOOK3.setPrice(price);
    BOOK3.display();

    System.out.println("Enter in a blank separated list: ID, number in stock, quality, price" + 
                       "- use ALL GOOD DATA");

    bookID = keyboard.nextInt();
    numberInStock = keyboard.nextInt();
    code = keyboard.nextInt();
    price = keyboard.nextDouble();

    BOOK4.setID(bookID);
    BOOK4.setStock(numberInStock);
    BOOK4.setCode(code);
    BOOK4.setPrice(price);
    BOOK4.display();






 }
}

我在创建对象时做错了什么吗?如何对BOOK2,BOOK3和BOOK4使用非默认构造函数?我创建了它,但是也许我没有正确使用它。任何反馈将不胜感激。

杰伊·达曼德拉·索兰基(Jay Dharmendra Solanki)

使用时

 BOOK1 = new BOOKItem();

您正在调用默认构造函数(不带任何参数的构造)

接受用户输入后,您将调用非默认构造函数

bookID = keyboard.nextInt();
numberInStock = keyboard.nextInt();
code = keyboard.nextInt();
price = keyboard.nextDouble();

BOOK2 = new BOOKItem(bookID, numberInStock, price, code);

使用上面的代码来使用参数化构造函数(非默认构造函数)

这称为构造函数重载。

因此,对于要分配默认值的对象,请调用默认构造函数。对于该对象,您可以使用在使用参数定义的构造函数中向它们发送的变量提供可用的信息,要分配该值

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用非默认应用程序打开链接

来自分类Dev

在Android中使用默认应用程序打开文件

来自分类Dev

在构造函数中使用默认参数

来自分类Dev

在默认构造函数中使用sf :: Shape

来自分类Dev

Spring MVC Web应用程序:找不到默认构造函数

来自分类Dev

我可以在应用程序的其他资产中使用Apple提供的默认UIBarButton图标吗?

来自分类Dev

在我的角度应用程序中使用ngChange =“ myFunction()”时,无法在select> option上设置默认值

来自分类Dev

如何在Universal Windows Apps中使用非默认构造函数

来自分类Dev

如何忽略“避免在片段中使用非默认构造函数”错误?

来自分类Dev

是否可以在C ++中使用非默认构造函数创建模板实例?

来自分类Dev

程序调用默认构造函数?

来自分类Dev

使用约定在MEF 2中使用默认构造函数和开放泛型

来自分类Dev

为什么我可以在decltype()中使用私有默认构造函数?

来自分类Dev

尝试使用init()启动程序,但是它告诉我没有合适的默认构造函数

来自分类Dev

如何将IIS的根应用程序设置为使用非默认appPool

来自分类Dev

如何从带有默认构造函数的另一个类中启动javafx应用程序?

来自分类Dev

更改默认应用程序

来自分类Dev

在Java中使用CDI时是否需要默认构造函数?

来自分类Dev

不允许在 C++ 中使用默认构造函数

来自分类Dev

如何在默认的xcode应用程序中使用sqlite密码?

来自分类Dev

在 Spring MVC 应用程序中使用 FB 登录 - 默认表的目的是什么?

来自分类Dev

Java使用默认构造函数

来自分类Dev

R闪亮:当应用程序中的字段留空时,使用函数默认值

来自分类Dev

iOS:在我的应用程序的xcode中设置默认语言

来自分类Dev

iOS:在我的应用程序的xcode中设置默认语言

来自分类Dev

Android应用程序:我应该使用MEAN堆栈还是可用的默认android studio

来自分类Dev

使用Xamarin,为什么我的应用程序设置默认为false?

来自分类Dev

为什么我不能使用默认文件(如记事本)运行应用程序?

来自分类Dev

如何使用php为我的网站应用程序创建默认页面?

Related 相关文章

  1. 1

    如何使用非默认应用程序打开链接

  2. 2

    在Android中使用默认应用程序打开文件

  3. 3

    在构造函数中使用默认参数

  4. 4

    在默认构造函数中使用sf :: Shape

  5. 5

    Spring MVC Web应用程序:找不到默认构造函数

  6. 6

    我可以在应用程序的其他资产中使用Apple提供的默认UIBarButton图标吗?

  7. 7

    在我的角度应用程序中使用ngChange =“ myFunction()”时,无法在select> option上设置默认值

  8. 8

    如何在Universal Windows Apps中使用非默认构造函数

  9. 9

    如何忽略“避免在片段中使用非默认构造函数”错误?

  10. 10

    是否可以在C ++中使用非默认构造函数创建模板实例?

  11. 11

    程序调用默认构造函数?

  12. 12

    使用约定在MEF 2中使用默认构造函数和开放泛型

  13. 13

    为什么我可以在decltype()中使用私有默认构造函数?

  14. 14

    尝试使用init()启动程序,但是它告诉我没有合适的默认构造函数

  15. 15

    如何将IIS的根应用程序设置为使用非默认appPool

  16. 16

    如何从带有默认构造函数的另一个类中启动javafx应用程序?

  17. 17

    更改默认应用程序

  18. 18

    在Java中使用CDI时是否需要默认构造函数?

  19. 19

    不允许在 C++ 中使用默认构造函数

  20. 20

    如何在默认的xcode应用程序中使用sqlite密码?

  21. 21

    在 Spring MVC 应用程序中使用 FB 登录 - 默认表的目的是什么?

  22. 22

    Java使用默认构造函数

  23. 23

    R闪亮:当应用程序中的字段留空时,使用函数默认值

  24. 24

    iOS:在我的应用程序的xcode中设置默认语言

  25. 25

    iOS:在我的应用程序的xcode中设置默认语言

  26. 26

    Android应用程序:我应该使用MEAN堆栈还是可用的默认android studio

  27. 27

    使用Xamarin,为什么我的应用程序设置默认为false?

  28. 28

    为什么我不能使用默认文件(如记事本)运行应用程序?

  29. 29

    如何使用php为我的网站应用程序创建默认页面?

热门标签

归档