powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Помогите сделать следующее
4 сообщений из 4, страница 1 из 1
Помогите сделать следующее
    #34126788
JulT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такой код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
    String name="Global";
  for ( int  y= 0 ;y<result.size();y++){
             MyBean beanSub=(MyBean)result.elementAt(y);
        if (name.equals(beanSub.getName())){
            // bla-bla
                } else {
         // а вот тут мне нужно взять следующее значение из result,т.е. увеличить "у" на еденицу,а это учитывая то,что я нахожусь в цикле,не очень хорошо, как сделать такое
                }
}
Thanks
...
Рейтинг: 0 / 0
Помогите сделать следующее
    #34127040
artgonch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Увеличиыайте в цикле на 1 и проверяйте выход за границу массива. Другого не дано
...
Рейтинг: 0 / 0
Помогите сделать следующее
    #34127042
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы сделал цикл while, но надо учитывать, что я большей частью писал на Delphi.
...
Рейтинг: 0 / 0
Помогите сделать следующее
    #34127703
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что мешает просто ничего не писать в блоке else?

Если нужно обработать два элемента одновременно (текущий и следующий), то нужно явно это написать. Н-р, так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
        String name = "Global";
         for  ( int  y =  0 ; y < result.size(); y++) {
            MyBean beanSub = (MyBean) result.elementAt(y);
             if  (name.equals(beanSub.getName())) {
                // bla-bla
            }  else  {
                y++;
                 if   (y < result.size())  {
                      MyBean beanSub2 = (MyBean) result.elementAt(y);
                      //bla-bla 2
                }  else  {
                       throw   new  YourException("Wrong format of result.")
                }
            }
        }

Но это не путь настоящих джедаев. Настоящий джедай сделает класс для обработки result'a, потому что ООП это забавно:

Н-р,
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
 class  YourIterator {
     private  Vector beans;
     private   int  index =  0 ;

     public  YourIterator(Vector beans) {
         this .beans = beans;
    }

     public   boolean  hasNext() {
         return  (index +  1 ) < beans.size();
    }

    /**
     * @return is position changed.
     */
     public   boolean  next() {
         if  (hasNext()) {
            index++;
             return  true;
        }
         return  false;
    }

    /**
     * throws ArrayIndexOutOfBoundsException
     */
     public  MyBean current() {
         return  (MyBean) beans.elementAt(index);
    }
}

 abstract   class  Processor {
     protected  YourIterator iterator;

     public  Processor(Vector beans) {
        iterator =  new  YourIterator(beans);
    }

     public   void  process() {
         while  (iterator.hasNext()) {
            iterator.next();
            process(iterator.current());
        }
    }

     protected   abstract   void  process(MyBean myBean);
}

 class  YourProcessor  extends  Processor {

     private  String GLOBAL_NAME = "Global";

     private  StringBuilder resultWillBeHere =  new  StringBuilder();

     public  YourProcessor(Vector beans) {
         super (beans);
    }

     public   void  process(MyBean myBean) {
         if  (GLOBAL_NAME.equals(myBean.getName())) {
            processGlobal(myBean);
        }  else  {
             if  (!iterator.next()) {
                 throw   new  YourException("Next bean not found...");
            }
            processFoo(myBean, iterator.current());
        }
    }

     private   void  processGlobal(MyBean global) {
        //bla-bla
        resultWillBeHere.append(global.getName()).append(", ");
    }

     private   void  processFoo(MyBean first, MyBean second) {
        //bla-bla 2
        resultWillBeHere.append(first.getName()).append(" - ").append(second.getName()).append(", ");
    }

    //just example
     public  String getResult() {
         if  (resultWillBeHere.length() ==  0 ) {
             return  "";
        }
         return  resultWillBeHere.substring( 0 , resultWillBeHere.length() - ", ".length());
    }
}

//usage:
YourProcessor processor =  new  YourProcessor(result);
processor.process();
Sytem.out.println(processor.getResult());

На самом деле всё зависит от решаемой задачи.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Помогите сделать следующее
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]