Java检索正确的对象

时间:2019-03-17 21:03:48

标签: java class object

对于一个简单的任务,该程序似乎过于复杂,但这是简化的
版本较复杂的程序,因为我遇到了一个非常具体的问题。

所以,如果我输入命令:

ADD //命令“ ADD”,将电话添加到类PhoneShop中的阵列列表中

DISPLAY //命令“ DISPLAY”,然后将出现下一行,这是正确的

0三星

1个Google

2索尼

3 LG

4部iPhone

购买0 //命令“购买#”,表示在阵列列表的第#个索引处购买电话

DISPLAY //命令“ DISPLAY”,然后将出现下一行,这是正确的

0个Google

1索尼

2 LG

3个iPhone

RETURN //命令“ RETURN”,将最后购买的手机返回到阵列列表的末尾

DISPLAY //命令“ DISPLAY”,然后将出现下一行,最后一行不正确

0个Google

1索尼

2 LG

3个iPhone

4个Google

我想要的是最后一条输出线是最后购买的电话。因此预期是:

0个Google

1索尼

2 LG

3个iPhone

4个三星

我认为我的问题是我要返回新阵列列表的第0个索引(在购买电话之后)。我想返回旧数组列表的第0个索引(在购买手机之前)。

我还有另一个问题,例如,如果连续两次输入返回的命令,则我的程序将两次返回“最后购买的手机”。为了解决这个问题,我知道我应该将上次购买的手机参考变量更新为null,但是我不确定要实现该变量。因此,例如,会发生这种情况:

添加

购买0

返回

返回

显示

0个Google

1索尼

2 LG

3个iPhone

4个Google

5个Google

PhoneShopSimulator类:

import java.util.ArrayList;
import java.util.Scanner;

public class PhoneShopSimulator
{
     public static void main(String[] args)
        {
        PhoneShop shop = new PhoneShop();
        ArrayList<Phone> phones = new ArrayList<Phone>();
        int index = 0;

        phones.add(new Phone("Samsung"));
        phones.add(new Phone("Google"));
        phones.add(new Phone("Sony"));
        phones.add(new Phone("LG"));
        phones.add(new Phone("iPhone"));

        Scanner input = new Scanner(System.in);

        while (input.hasNextLine()) 
        {
             String line = input.nextLine(); 
             Scanner commandLine = new Scanner(line);
             String word = commandLine.next();

             if (word.equals("QUIT"))
             {
                 return;
             } 

             else if (word.equals("DISPLAY"))
             {
                  shop.displayInventory();  
             } 

             else if (word.equals("ADD"))
             {
                  shop.addPhones(phones);
             } 

             else if (word.equals("BUY"))
             {
                  index = Integer.parseInt(commandLine.next());
                  shop.buyPhone(index);
             }

             else if (word.equals("RETURN"))
             {  
                  shop.returnPhone(shop.getObjectPhone(index));
             }

             else
             {
                  System.out.println("Invalid Command");
             }
             commandLine.close();
        }
        input.close(); 
        }
 }

PhoneShop类:

import java.util.ArrayList;

public class PhoneShop 
{

private Phone p;
private ArrayList<Phone> phones;

public PhoneShop()
{
    ArrayList<Phone> array = new ArrayList<Phone>();
    phones = array; 
}

public Phone getObjectPhone(int index)
{
    p = phones.get(index);
    return p;
}

public void addPhones(ArrayList<Phone> newPhones)
{
    phones.addAll(newPhones);
}

public ArrayList<Phone> getPhones()
{
    return phones;
}

public Phone buyPhone(int index)
{
    if (index >= 0 && index < phones.size())
    {           
        p = phones.remove(index);
        return p;
    }
    return null;
}

public Phone returnPhone(Phone p)
{
    if (p != null)
    {
        phones.add(p);

    }
    return null;
}


public void displayInventory()  
{
    for (int i = 0; i < phones.size(); i++)
    {
         Phone referenceP = new Phone(phones.get(i).getModel());
         System.out.println(i + " " + referenceP.display());
    }
}

}

电话类别:

public class Phone 
{

private String model;

public Phone(String model)
{
    this.model = model;
}

public String getModel() 
{
    return model;
}

public String display()
{
    return model;
}
}

0 个答案:

没有答案