Нужно написать клиент серверное приложение которое возвращает максимальную неубывающую последовательность массива. Почемуто количество элементов максимальной последовательности находит и выводит верное, а вместо самой последовательности выводит не максимальную, а последнюю найденную. Никак не могу понять в чем ошибка, помогите пожалуйста.
| Код | 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); }
|
|