java - 只需一个 Setter 即可实现多个输入

标签 java parameter-passing user-input getter

我希望你能帮助我完成一个学校项目。我正在编写一个代码,用户可以在其中输入用户在橱柜中拥有的杂货。它还指定了产品的类型、名称、购买商店、标签、价格、数量——就像库存一样。我有一个类名称 Dairy,我可以为我需要的每个输入分别创建一个 getter。这工作得很好,我设置了它,有一个传递参数,当我在 InputDairy 方法中调用 getter 时,它工作得很好。

但是由于我向用户询问了很多关于产品的问题,我不想有 10 个 getter,有没有一种方法可以只拥有一个,然后传递参数?下面的代码是无效的,我尝试在一个 getter 中设置所有参数,然后一一传递参数。但这是行不通的。这是可能的还是我必须为我提出的每个问题设置一个 setter/getter ?

public static void InputDairy (Dairy DairyProducts[], Fruit FruitProducts[], Scanner input){ // START OF INPUT DAIRY

     System.out.println("Let's put in some DAIRY products");

     for (int i = 0; i < DairyProducts.length; i++){

         System.out.println("Enter name of DIARY product");
         String a = input.next();
         DairyProducts[i].setDairyData(a);

         System.out.println("Enter Store where you bought DIARY product");
         String a = input.next();
         DairyProducts[i].setDairyData(b);

         System.out.println("Enter how much you paid for DIARY product");
         String a = input.next();
         DairyProducts[i].setDairyData(c);

         System.out.println("Enter when did you buy DIARY product");
         String a = input.next();
         DairyProducts[i].setDairyData(d);
   }

} // END OF INPUT DAIRY enter code here


public class Dairy {
    private String D_NameOfDairy;
    private String D_NameOfStore;
    private int D_PricePaid;
    private int D_DayPurchased;
    private int D_BestBefore;
    private int D_AmountInGrams;
    private int D_Pieces;

    public Dairy () {

        D_NameOfDairy = "Default name of dairy";
        D_NameOfStore = "Default name of store for dairy";
        D_PricePaid = 0;
        D_DayPurchased = 01/01/2000;
        D_BestBefore = 10/10/2010;
        D_AmountInGrams = 0;
        D_Pieces = 0;
    }

    public void setDairyData (String a, String b, int c, int d){

        D_NameOfDairy = a;
        D_NameOfStore = b;
        D_PricePaid = c;
        D_DayPurchased = d;

    }

}

最佳答案

首先从用户那里获取所有答案,然后将它们在一行中传递给您的 setter 函数。

public static void InputDairy (Dairy DairyProducts[], Fruit FruitProducts[], Scanner input){ 

     System.out.println("Let's put in some DAIRY products");

     for (int i = 0; i < DairyProducts.length; i++){

         System.out.println("Enter name of DIARY product");
         String a = input.next();

         System.out.println("Enter Store where you bought DIARY product");
         String b = input.next();

         System.out.println("Enter how much you paid for DIARY product");
         String c = input.next();

         System.out.println("Enter when did you buy DIARY product");
         String d= input.next();

         DairyProducts[i].setDairyData(a,b,c,d);
   }

}

关于java - 只需一个 Setter 即可实现多个输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42521926/

相关文章:

java - 发送电子邮件和检查状态

memory-management - 如何将 cl_mem 缓冲区数组传递给 OpenCL 设备

parameter-passing - 如何将参数从 QSub 传递到 Bash 脚本?

javascript - 根据用户输入的过滤标记 leaflet.js

c - 为什么我无法输入在c 中打开的文件名?

java - Java中的延续错误

java - java中Timer和ThreadPool哪个用?

java - Spring @Autowired变量在@Component内部为空

python - 类型错误 : got multiple values for argument when passing in *args

java - 使用 MapReduce 在 couchbase 中动态 View