|
|
|
| Надо написать консольную программу на Яве для управления Инструментами.
Все состоит из нескольких классов.
Но проблема такая:
Есть метод для добавления нового инструмента.
Первым делом запрашивается код инструмента. Если такой код уже имеется, то выводится ошибка и код запрашивается повторно.
К сожалению стандартные таблицы не используются, а вместо них есть ArrayList.
Застрял вот на этом алгоритме с проверкой кода.
Пройтись по всем элементам списка не так просто.
Вижу только использование do..while в еще одном do..while
Может кто нибудь увидит упрощенный алгоритм приведенный в первом листинге?
Спасибо.
String inventoryCode;
Tool myTool;
boolean endOfListe = false;
myTool = liste.firstElement(); // points to the first element of list
//
do{
inventoryCode = readInventoryCode();
if(!liste.isEmpty()){
if(myTool.getInventoryCode().equals(inventoryCode))
System.out.println("ERROR, INVENTORY CODE EXISTS!");
else
inventoryCodeExists = false;
}
if(myTool == liste.lastElement())
endOfListe = true;
else{
myTool = liste.successorOf(myTool);
}
}
while(!endOfListe);
|
public boolean isEmpty (){
return liste.size() == 0;
}
public T firstElement (){
if(isEmpty())
return null;
else
return liste.get(0);
}
public T lastElement (){
if(isEmpty())
return null;
else
return liste.get(liste.size()-1);
}
public T successorOf (T element){
if( isEmpty() || liste.indexOf(element) >= nbElements() )
return null;
else
return liste.get(liste.indexOf(element)+1);
}
|
| |
|
|
|
|
|
|
|
для: codexomega
(17.02.2006 в 23:55)
| | Короче Ява пусть не пугает, так как алгоритм прост и можно хоть на Яваскрипте, хоть на PHP.
Это обычные циклы while/do..while
Только вот если имея дело с массивом можно воспользоваться for(i=0;i<size;i++){}
То здесь для того чтобы пробежаться по всему списку, используются: первыйЭлемент, следующийЭлемент, последнийЭлемент.
Так вот пользователь вводит код. Программа проверяет наличие идентичного кода в списке, чтобы повторов не было.
И если такой же код уже присутствует, то вылетает ошибка и снова запрашивается код.
Так что вроде получается 2 цикла, один в другом...
У меня получается пробежаться по списку и проверить код. Ошибка выскакивает как положенно, но вот в случае ошибки, не получается опять запросить код.
Как эти циклы правильно запихать один в другой? | |
|
|
|