Java Получение правильного объекта - PullRequest
0 голосов
/ 18 марта 2019

Эта программа может показаться слишком сложной для простой задачи, но это упрощенная
версия моей более сложной программы, потому что у меня очень специфическая проблема.

Так что, если я введу команды:

ADD // Команда «ADD», добавляет телефоны в список массивов в классе PhoneShop

DISPLAY // Команда «DISPLAY», затем появятся следующие строки, которые являются правильными

0 Samsung

1 Google

2 Sony

3 LG

4 iPhone

КУПИТЬ 0 // Команда "КУПИТЬ# ", означает купить телефон по #-му индексу списка массивов

DISPLAY // Команда" DISPLAY ", тогда появятся следующие строки, которые являются правильными

0 Google

1 Sony

2 LG

3 iPhone

RETURN // Команда «RETURN», возвращает последний купленный телефон в конец списка массивов

DISPLAY // Команда «DISPLAY», затем появятся следующие строки, последняя строка неверна

0 Google

1 Sony

2 LG

3 iPhone

4 Google

Я хочу, чтобы последняя строка вывода была последним приобретенным телефоном.Таким образом, ожидаемое будет:

0 Google

1 Sony

2 LG

3 iPhone

4 Samsung

Я думаю, что моя проблема в том, что я возвращаю 0-й индекс нового списка массивов (после покупки телефона).Я хочу вернуть 0-й индекс старого списка массивов (до покупки телефона).

У меня также есть другая проблема, когда, если возвращаемая команда вводится 2 раза подряд, например, моя программавернет «последний купленный телефон» дважды.Чтобы это исправить, я знаю, что мне нужно обновить нулевую переменную, купленную в прошлом телефоне, на ноль, но я не совсем уверен, чтобы это реализовать.Например, это может произойти:

ADD

BUY 0

RETURN

RETURN

DISPLAY

0 Google

1 Sony

2 LG

3 iPhone

4 Google

5 Google

PhoneShopSimulator Class:

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;
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...