Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Максимальная неубывающая последовательность в масс 
:(
    Опции темы
virt117
Дата 22.5.2013, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 22.10.2011

Репутация: нет
Всего: нет



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

import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.StringTokenizer;
 
public class ServerTokenizerNumber {
    public static void main(String[] args) {
        try {
            ServerSocket sock1 = new ServerSocket(8189);
            while (true) {
                Socket incoming = sock1.accept();
                Runnable r = new ThreadedEchoHandler(incoming);
                Thread t = new Thread(r);
                t.start();
            }
        } catch (IOException ex) {
        }  }  }
 
class ThreadedEchoHandler implements Runnable {
    private Socket incoming;
    public ThreadedEchoHandler(Socket i) {
        this.incoming = i;
    }
 
    @Override
    public void run() {
        try {
            ObjectInputStream input = new ObjectInputStream(incoming.getInputStream());
            OutputStream outputStream = incoming.getOutputStream(); 
            PrintWriter out = new PrintWriter(outputStream, true); 
            out.println("Есть соединение!");
            String readObject = (String) input.readObject(); 
            numberParse(readObject, out); 
 
        } catch (ClassNotFoundException ex) {
            System.out.println(ex);
        } catch (IOException ex) {
            System.out.println(ex);
        }  }
 
    private void numberParse(String str, PrintWriter out) {
      try {
            ArrayList<Integer> list = new ArrayList<Integer>(); 
             ArrayList<Integer> pos = new ArrayList<Integer>();
             ArrayList<Integer> pos2 = new ArrayList<Integer>(); 
            StringTokenizer stringTokenizer = new StringTokenizer(str, " \n\r,");
            while (stringTokenizer.hasMoreTokens()) { 
                String nextToken = stringTokenizer.nextToken(); 
                int parseInt = Integer.parseInt(nextToken);   
                    list.add(parseInt); 
            }
 
 int i, MaxLen,Len;
   MaxLen= 0;
   Len= 1;
     for (int s=1 ; s<list.size(); s++){
      if (list.get(s)> list.get(s - 1)){
        pos.add(list.get(s));
        Len= Len + 1;
    }
    else
    {
        if (Len > MaxLen) {
          pos2=pos;
          MaxLen= Len;
          pos.clear ();
        Len= 1;
     }  } }
            out.println(MaxLen);
              for (Integer t : pos2) {
                 out.println(t);
          }
        } catch (Exception ex) {
      out.println("Введены неверные данные");
        } } }


Вот тут проблемный момент
Код

int i, MaxLen,Len;
   MaxLen= 0;
   Len= 1;
     for (int s=1 ; s<list.size(); s++){
      if (list.get(s)> list.get(s - 1)){
        pos.add(list.get(s));
        Len= Len + 1;
    }
    else
    {
        if (Len > MaxLen) {
          pos2=pos;
          MaxLen= Len;
          pos.clear ();
        Len= 1;
     }  } }
            out.println(MaxLen);
              for (Integer t : pos2) {
                 out.println(t);
          }

PM MAIL   Вверх
Pawl
Дата 22.5.2013, 22:25 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 649
Регистрация: 22.4.2008
Где: Витебск

Репутация: 7
Всего: 28



когда делаешь так
Код

pos2=pos;
 a затем так
Код

pos.clear ();

pos2 тоже чистится.
попробуй так:
Код

pos2 = (ArrayList<Integer>) pos.clone();



--------------------
В действительности всё совсем не так, как на самом деле
PM MAIL   Вверх
virt117
Дата 22.5.2013, 23:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 22.10.2011

Репутация: нет
Всего: нет



Огромное спасибо, вы меня спасли.
PM MAIL   Вверх
virt117
Дата 23.5.2013, 00:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 22.10.2011

Репутация: нет
Всего: нет



Извиняюсь еще одна проблемка всплыла, почтему то всегда выводит массив начиная со второго числа, т.е. если у нас 1 2 3 4 выдает 2 3 4.
PM MAIL   Вверх
Mirkes
Дата 23.5.2013, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 586
Регистрация: 18.8.2011
Где: Красноярск

Репутация: 7
Всего: 17



Цитата(virt117 @  22.5.2013,  20:33 Найти цитируемый пост)
      if (list.get(s)> list.get(s - 1)){
        pos.add(list.get(s));
        Len= Len + 1;
    }

потому, что записывается со второго. Первый элемент никто не записывал


--------------------
Mirkes
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0660 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.