2012-04-16 3 views
0

Я попал в блокнот с этой программой.Java Inventory - класс ADT и проблемы с файлом Ввод

У меня есть программа, которая включает в себя создание программы, которая включает в себя «инвентарь» Cadillac, и среди всего остального я не могу найти ответы на свои вопросы.

Я просто не знаю, что делать. Я дам указания и отправлю синтаксис, который у меня есть.

Вот что я должен сделать:

  • инвентарь для вымышленного Cadillac дилерского и позволяет инвентаризации для поиска, чтобы отобразить список автомобилей, которые отвечают определенным критериям.

  • создать класс ADT под названием Cadillac, который содержит четыре поля данных экземпляра: строки для имени модели, номера запаса и цвета и целого числа для цены. Класс содержит один конструктор, который получает значения для всех четырех полей экземпляра и присваивает значения параметров переменным экземпляра. Класс также содержит простой метод доступа и метод мутаторов для каждого поля данных экземпляра.

  • Когда программа запущена, она загружает инвентарь из файла «inventory.dat».

  • Вот пример содержимого файла: DTS 11210 Glacier White 42706 Escalade 66502 Малиновый Pearl 65547 XLR 58362 Radiant Bronze 78840 SRX 16218 Radiant Бронза 44522
  • Каждая строка (каждая запись) содержит 4 поля данных: строки для имени модели, 5-значный номер запаса и цвет, а также целое число для цены. Разделитель между полями является символом табуляции («\ t»).

  • В main() создайте массив объектов Cadillac, прочитайте в записи из файла, разделите его на 4 поля, создайте объект Cadillac и добавьте его в массив.

  • файл инвентаризации изменяется, и ваша программа должна работать независимо от количества записей в файле. Вы гарантированно, что в файле не будет более 100 записей (у них есть только место для 100 автомобилей на лоте), и каждая запись будет содержать ровно 4 поля действительных данных.
  • Пользователь может выполнить поиск инвентаря двумя способами: по названию модели и по цене. После загрузки инвентаря спросите пользователя, какой поиск он хочет сделать. Если они указывают «по имени модели», попросите их ввести имя для поиска. Действительными именами модели являются: DTS, Escalade, ESV, EXT, SRX, STS и XLR. Найдите инвентарь для всех автомобилей с таким именем и отобразите таблицу результатов на экране консоли.

-Когда пользователь указывает, что он/она хочет, чтобы искать по цене, иметь их ввести цену искать для, а затем выполнить поиск, отображение всех автомобилей, которые имеют цену в пределах 3000 $ поисковой цене. - Программа должна циклически выполнять столько запросов, сколько хочет пользователь. Позвольте пользователю закончить программу , нажав кнопку «Отмена», когда вас попросят указать тип поиска, который они хотят выполнить. Кнопка «Отмена» по второму вопросу (модель или цена для поиска) не должна заканчиваться программой , но ваш код должен распознавать ее как недопустимую запись, а не исключать исключение. Помимо вывода списка, все входные и выходные данные в программе должны быть с диалогами JOptionPane.

Вот то, что я до сих пор:

import java.util.Scanner; 
import java.io.*; 

public class Inventory { 

    public static void main (String[] args) 
    { 
    String line; 
    String[] fields; 
    String[] items; 
    int count = 0; 
    int recCount; 
    Cadillac[] list = new Cadillac[100]; 

    try 
    { 
     BufferedReader br = new BufferedReader(new FileReader("inventory.dat")); 
     line = br.readLine(); 
     while(line != null) 
     { 
     fields = line.split("\t"); 
     items[count++] = new Cadillac(fields[0], fields[1], fields[2], 
               fields[3]); 
     line = br.readLine(); 
     } 
     br.close(); 
    } 
    catch(IOException e) 
    { 
     System.out.println("Can't open input file. Program terminating."); 
     System.exit(1); 
    } 

    } 
    public static int loadArray(Cadillac[] items) 
    { 


    } 

} 

class Cadillac { 
        //Instance data 
    private String model; 
    private String stockNum; 
    private String color; 
    private int price; 
        //Constructor 
    public Cadillac(String mdl, String stckNum, String clr, int prc) 
    { 
     model = mdl; 
     stockNum = stckNum; 
     color = clr; 
     price = prc; 
    } 
        //Set of Accessor and Mutator Methods 
    public String getModel(){ 
     return model; 
    } 
    public void setModel(String newModel){ 
     model = newModel; 
    } 
    public String getStockNum(){ 
     return stockNum; 
    } 
    public void setStockNum(String newStockNum){ 
     stockNum = newStockNum; 
    } 
    public String getColor(){ 
     return color; 
    } 
    public void setColor(String newColor){ 
     color = newColor; 
    } 
    public int getPrice(){ 
     return price; 
    } 
    public void setPrice(int newPrice){ 
     price = newPrice; 
    } 
} 

ПОЖАЛУЙСТА ПОМОГИТЕ! У меня нет другого представления о том, что делать.

+1

В какой части этой домашней работы вы столкнулись с проблемой? Если вы столкнулись с ошибкой, вам нужно включить ее в свой вопрос. Постарайтесь быть прямыми и точными, чтобы помочь другим вам помочь. – Perception

+0

Говорят, что он не может найти конструктор символов Cadillac, который я пробовал все, что я знаю, чтобы помочь исправить это, но ничего не работает. Кроме того, я вообще не понимаю, что делать, чтобы выполнить это задание. Я знаю, что, если другие программируют домашнее задание, это то, чего не следует делать, и на него смотрят сверху вниз, но это то, с чем я действительно борюсь, и вам нужно почти элементарное пошаговое руководство относительно того, как писать эту программу. – user1334675

ответ

1

В отношении Вашего комментария:

Он говорит, что он не может найти конструктор символа Cadillac

Ваш единственный конструктор, определенный для Cadillac имеет параметры (String, String, String, int) но при попытке создать экземпляр объекта в основном, вы передаете ему четыре строки. Java бросает ошибку, потому что не может найти правильный конструктор.

Либо передайте последний параметр как int, либо создайте новый конструктор для своих аргументов.

1

Ваша самая непосредственная проблема заключается в том, что подпись вашего конструктора объектов данных несовместима с тем, как вы его вызываете. Вы объявили ваш конструктор, как так:

public Cadillac(String mdl, String stckNum, String clr, int prc) 

Он принимает три строковых аргумента и в Int, но вы вызываете его с четырьмя строками:

new Cadillac(fields[0], fields[1], fields[2], fields[3]); 

То источник ошибки компиляции вы сообщили о наблюдении , Вы должны преобразовать свою последнюю строку в int.

new Cadillac(fields[0], fields[1], fields[2], Integer.parseInt(fields[3]).intValue()); 

Кроме того, в вашем коде есть еще одна вопиющая ошибка. Вы объявляете массив строк, но пытаются хранить экземпляры «Кадиллак» в него:

String[] items; 
// ... 
items[count++] = new Cadillac(...); 

Я не буду кодировать всю свою домашнюю работу для вас, но мой совет будет первым прямо на простом английском языке предложения, каждая задача, которая должна быть выполнена для завершения общей программы. Затем запустите перевод каждого отдельного предложения в код, в идеале, в виде методов на ваших классах, которые можно вызвать. По мере того, как вы сталкиваетесь с проблемами, вернитесь и задайте конкретным вопросам, и я уверен, что здесь будет кто-то, желающий помочь вам больше.

Удачи.

+0

Хорошо, я изучил это еще немного, и у меня появился более конкретный вопрос. Как я могу создать массив объектов Cadillac, прочитать запись из файла «inventory.dat», разделить его на четыре поля и создать объект Cadillac и добавить его в массив. У меня просто небольшая проблема с этим, но если бы я мог это понять, я мог бы получить все остальное. – user1334675