Frequência acumulada

Meu professor de estatística pediu um programa que faça alguns cálculos … até ai tudo certo … porem estou com problemas na hora de fazer a frequência acumulada da minha tabela de distribuição de frequência, que todos podem olhar como fazer clicando aqui , porem eu só consigo repetir os valores, e não soma-los, como vcs podem ver:

que esta assim por enquanto …

public class todo {
private static final String Double = null;
static int qtdbd = 0;
static float length = 0;
static float somatresult = 0, produtresult = 1;

static Scanner entrada = new Scanner(System.in);

public static void main(String[] args) {
	int cont = 0;
	int cont2 = 0;

	System.out.println("Qual o tamanho que o  Banco de dados vai ter ?");
	qtdbd = entrada.nextInt();
	
	float dados[] = new float[qtdbd];

//====================

public static void bdados(float dados[]) {
		int b = 0;
		int cont2 = 0;

		for (int i = 0; i < dados.length; i++) {
			System.out.println("Entre com o banco de dados completo, " + (i + 1) + "° Valor:");
			cont2 = entrada.nextInt();

			dados[i] = cont2;
			length++;
		}

e esta é a tabela …

public static void classes(float dados[]) {
		float result = 0;
		float log = 0;
		float classi = 0;
		float menor2 = 0, maior2 = 0;
		float contfi = 0;
		for (int i = 0; i < dados.length; i++) {
			if (dados[i] > maior2) {
				maior2 = dados[i];
			}
			if (dados[i] < menor2) {
				menor2 = dados[i];
			}
		}
		result = maior2 - menor2;
		if (dados.length > 25) {
			log = (float) (1 + (3.3 * (Math.log10(length))));
			log = (float) Math.ceil(log);
			classi = result / log;
		}
		if (dados.length <= 25) {
			log = (float) (Math.sqrt(length));
			log = (float) (Math.ceil(log));
			classi = result / log;
		}
		float vetabela[] = new float[(int) log + 2];
		float fi[] = new float[(int) log + 1];
		float fic[] = new float[(int) log + 1];
		float fic2[] = new float[(int) log + 1];
		System.out.println(
				"|=================================================================================================|\n\n");
		System.out.println("O numero de classes é: " + log + "\n" + "A Amplitude total é: " + classi + "\n\n");
		System.out.println(
				"|=================================================================================================|\n\n");
		vetabela[0] = menor2 + classi;
		for (int i = 0; i < log ; i++) {
			vetabela[i + 1] = vetabela[i] + classi;
			for (int j = 0; j < dados.length; j++) {
				if (dados[j] >= vetabela[(int) (classi - classi) + (i)]
						&& dados[j] < vetabela[(int) ((classi - classi) + (i + 1))]) {
					fi[i]++;
				}
			}
		}
		for (int i = 0; i < log; i++) {
			fic[i] = fi[i] + fic[i];
			System.out.println("(((((-))))) " + vetabela[(int) (i)] + " |--------- "
					+ vetabela[(int) ((i + 1))] + " | " + fi[i] + " | " + fic[i] + "\n");
		}
		System.out.println(
				"|=================================================================================================|\n\n");
	}

Alquém teria como dizer aonde errei ou o porque de não estar funcionando ? agradeço, desculpe pela formatação … meu primeiro tópico

Não era para ser fic[i] = fi[i] + fic[i - 1], para i > 1??

Me ajudaram aki já :D, foi besteira minha tentar fazer com um Vetor, usei uma float, e foi somando e printando o valor ao mesmo tempo
for (int i = 0; i < log; i++) {
aux = fi[i] + aux;
System.out.println("(((((-))))) " + vetabela[(int) (i)] + " |--------- "
+ vetabela[(int) ((i + 1))] + " | " + fi[i] + " | " + aux + “\n”);
}