【问题标题】:How to create a list of objects for each time the for loop hits?每次for循环命中时如何创建对象列表?
【发布时间】:2016-02-10 19:49:42
【问题描述】:

好的,所以这可能是一个冗长的,但目前我被困在如何在这种情况下为每个新配方创建一个成分列表,因为当我运行这两个程序时,它会不断地将对象添加到相同的列表。任何有关缩短代码或更好方法的建议都将不胜感激,但为每次迭代制作一种实例变量是重中之重。谢谢。澄清一下,每次运行 AddRecipe 类时,我都需要一个特定于该配方的新成分列表,而不是所有配方中的大量成分列表。

问题;每次我遍历我的 addIngrediant 类时,我都希望使用它的 AddRecipe 类有一个不同的成分值。 (对于每个配方,新成分)我不知道如何做到这一点,并提供了两种方法的示例。

在食谱类中

  public static void addIngrediants(String EcipeName){
  if(Recipe.recipeName.equals(EcipeName)){
    List<List<String>> lists = new ArrayList<List<String>>();
    for (int i = 0; i < 100; i++) {

System.out.println("Would you like to add an Ingrediant(YES or NO)");
Scanner yesSir = new Scanner(System.in);
String inputSir = yesSir.nextLine();

if(inputSir.equals("YES")){
System.out.println("Enter your Ingrediant; ");
String userIngred = yesSir.nextLine();
Ingred.add(userIngred);

System.out.println("Your Ingrediant is; " + userIngred);
System.out.println("Your new ingrediant list is now; " + Ingred);

    }
else{
    System.out.println("Okay thanks!");
    break;
}
}
}


}

在包装类中

    public static void AddRecipe(){
    Recipe jackson = new Recipe();
    int index = 0;
    for(int i = 0; i<= recipeBook.size();){
        System.out.println("============================");
        System.out.println("Welcome to the Recipe Book!");
        System.out.println("============================");
        jackson.getDirections();
        jackson.getCalorieCount();
        jackson.getHi();
        jackson.getRecipeName();



            System.out.println("Would you like to add a recipe?(Type YES or NO)");
            Scanner wantTo = new Scanner(System.in);
            String bad = wantTo.nextLine();

            if(bad.equals("YES")){
                index++;
                System.out.println("Great, now lets name your Recipe;");
                String yesName = wantTo.nextLine();
                jackson.setRecipeName(yesName);

                System.out.println("First we'll start with Ingrediants, Input as many as you like");
                Recipe.addIngrediants(yesName);



                System.out.println("Moving on, Input your Directions;");
                String bud = wantTo.nextLine();
                jackson.setDirections(bud);

                System.out.println("Now input a Calorie Count (Numbers Only!)");
                int jman = wantTo.nextInt();
                jackson.setCalorieCount(jman);

提前致谢!

【问题讨论】:

  • 我投票关闭是因为:“寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定问题或错误以及重现它所需的最短代码问题本身。没有明确问题陈述的问题对其他读者没有用处。"
  • 我以为我很清楚这个问题,但如果它不明显,我会编辑它。

标签: java for-loop arraylist java.util.scanner


【解决方案1】:

我不确定我是否完全理解您的问题。仅从您发布的一小段代码来看,在我看来,您并没有真正接受面向对象的设计。通过阅读您的问题,我建议制作一个食谱类来存储食谱的所有基本元素。在这里,您应该有一个实例变量来存储您的步骤列表。从这里开始,我将开设另一个课程,作为食谱书。这个类应该能够创建、存储和管理配方对象。我要创建的最后一个类是可以接受用户输入的类。这将是您程序中的最高级别类,并允许用户通过控制台输入实际使用该程序。

【讨论】:

  • 这就是我所拥有的,为了简单起见,只展示了部分课程。我的错误是我无法为每个新配方存储单独的成分列表。
  • 每个配方都应该有它自己的唯一列表,如果该列表是配方类的一部分(假设列表不是静态的),那么每次您创建一个新的配方对象时,该列表应该为空。此外,仅从您发布的程序来看,并不是我所描述的。你的食谱类不应该询问名称等,它应该只用于存储和检索信息。
  • 好的,谢谢,如果它是静态的,那会改变什么?如果你有时间,你能给我看一个食谱类的编码示例吗? ((对不起,我缺乏知识,2个月进入计算机科学))
  • 静态标识符基本上告诉java在特定类的所有对象之间只有一个存在。如果您需要知道制造了多少特定对象,这对于计数器之类的东西很有用。我不会为你的食谱课编写代码,这可能是你学习一些东西的好机会。试着把关于食谱的所有基础知识都放在一个类中。为所有变量设置 getter 和 setter。然后有另一个类,其中包含一个可以实例化和存储这些配方对象的数组。
  • 好的,非常感谢,非常感谢。如果我超过 15 岁,我会给你一些代表!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-23
  • 1970-01-01
  • 1970-01-01
  • 2018-06-04
  • 1970-01-01
  • 1970-01-01
  • 2022-01-11
相关资源
最近更新 更多