2016-01-21 2 views
-3

ошибка не возвращает искомое утверждение, так что я нужна thiung для вывода положительного целого числа, которое будет иметь возможность дублировать список массива, это было бы очень признателен thatnksПеребора ArrayList, чтобы получить элемент номер

@Override 
public String getDescription(int itemNumber) { 
    if(isKnownItemNumber(itemNumber) == true) { 
     for (recordItem i : itemList) { 
      if(i.getItemNumber() == itemNumber) { 
       return description; 
      } 
     } 
    } 
    return "does not exist"; 
} 

    @Override 
public void setDescription(String description) { 
    this.description = description; 
} 

а вот главный метод с заселенной ArrayList:

package Purchase; 
import java.util.*; 

import javax.swing.SwingUtilities; 


public static void main(String[] args) { 
    SwingUtilities.invokeLater(new Runnable() { 


     public void run() { 
      gui.PosGUI.makeAndShowGUI(); 


      Items.newItems.recordItem(01,"banana",1.00,1); 
      , "Mayonnaise", 2.00, 0); 



     } 

    }); 

} 
} 
+4

Почему функция getItemNumber принимает параметр ?? он должен вернуть itemNumber элемента, вы передаете один параметр функции и возвращаете тот же параметр. \ –

+0

и что такое recordItem ?? –

+0

Первый комментарий Anoops помечен вашей ошибкой. Попробуйте без параметров или верните this.itemNumber; Если вы посмотрите на свой код, у вас должны быть только бананы в вашем списке товаров. Кстати, лучше изменить 'isItemNumber (...) == false' to'! IsItemNumber (...) '. Делает то же самое, но выглядит лучше. – ctst

ответ

1

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

Ваш метод getItemNumber принимает параметр и возвращает его в результате, это не имеет смысла.

public int getItemNumber(int itemNumber) { 
    return itemNumber; 
} 

Заменить этот метод с общим добытчика:

public int getItemNumber() { 
     return itemNumber; 
    } 

И ваш метод isKnownItemNumber становится:

public boolean isKnownItemNumber(int itemNumber) { 

    //assert itemNumber >= 0 : "Item Number must be greater than or equal to 0"; 
    for (recordItem i : itemList) { 
     if (i.getItemNumber() == itemNumber) { 
      return true; 
     } 

    } 
    return false; 
} 
+0

alright ive сделал эти изменения (отредактировал выше), но теперь он просто возвращает «не существует». – codingmachine

+0

Это не должно быть полное сообщение об ошибке, чего не существует? – Berger

+0

ну в getDescription, если он действительно найдет элемент с этим номером, он возвращает «не существует» – codingmachine

0

Существует, вероятно, еще одна ошибка в вашей записи-метода. Вы устанавливаете аргументы на этом, а не на новый элемент, который вы создаете. Попробуйте вместо этого:

@Override 
public void recordItem(int itemNumber, String description, double unitPrice, int sort) { 

    if ((isKnownItemNumber(itemNumber) == false) && (unitPrice > 0) && (sort == 0 || sort == 1)) { 
     Items theItems = new Items(); 
     theItems.itemNumber = itemNumber; 
     theItems.description = description; 
     theItems.unitPrice = unitPrice; 
     theItems.sort = sort; 
     itemList.add(theItems); 
    } 

} 

Другая ошибка: return i.description; вместо return description;

public String getDescription(int itemNumber) { 
    if(isKnownItemNumber(itemNumber) == true) { 
     for (recordItem i : itemList) { 
      if(i.getItemNumber() == itemNumber) { 
       return i.getDescription(); 
      } 
     } 
    } 
    return "does not exist"; 
} 

public String getDescription(){ 
    return description; 
} 
+0

, который выводит null по какой-то причине – codingmachine

+0

Да, вы должны вернуть i.description. :-). Кроме того, вы возвращаете описание своего статического элемента, которое равно null. Посмотрите на редактирование. – ctst

+0

это не позволит мне делать i.description, но позволяет мне делать i.getdescription, но это все равно возвращает «не существует». – codingmachine

Смежные вопросы