Моя программа создает диаграмму временных рядов с помощью JFreeChart (через Swing ChartPanel) и позволяет пользователю увеличивать ее (с помощью стандартной функции масштабирования ChartPanel). Программа имеет параметры (например, сглаживание), которые могут быть изменены во время выполнения; при сдвиге диаграмма заменяется с помощью метода «setChart ()» ChartPanel. Временные рамки, однако, неизменно остаются одинаковыми во всех сдвигах.
Когда вызывается «setChart ()», положение масштабирования сбрасывается, так что отображается вся диаграмма. Теперь я хочу сохранить положение масштабирования после вызова «setChart ()», чтобы пользователь мог наблюдать эффекты сдвига непосредственно на любом требуемом уровне масштабирования. Как это возможно?
-121--1646875-Рассмотрим следующий сценарий:
#!/bin/bash
num=0
cat file | while read line; do
echo "$line"
lines[$num]="$line"
((num++))
echo "num = $num"
done
echo "end num = $num"
i=0
while [ $i -lt $num ]; do
echo "${lines[$i]}"
((i++))
done
Обычно он должен считывать файл строкой за строкой, сохранять результат в массиве, затем проходить через массив и печатать его строкой за строкой. Проблема в том, что переменная $ num сбрасывается каким-то образом после выхода из первого цикла. Вывод этого сценария для меня следующий (используя файл с некоторым случайным мусором в нем):
dsfkljhhsdfsdfshdjkfgd
num = 1
fdfgdfgdfg
num = 2
dfgdfgdfgdfg
num = 3
dfgdfgdfgdfgdfg
num = 4
dfgdfgdfgdfgdfgd
num = 5
fgdfgdfgdfg
num = 6
dfgdfgdfgdfg
num = 7
dfgdfgdfgdfgdfg
num = 8
dfgdfgdfgdfg
num = 9
dfgdfgdgdgdg
num = 10
dfgdffgdgdgdg
num = 11
end num = 0
Почему это? Как запомнить переменную? Я использую bash 3.1.17 в SUSE Linux 10.