Array e loop

alguém pode me dizer como posso fazer isso até um certo número?

double tam=line[0].tamanho()+line[1].tamanho()+line[2].tamanho();

double tam=line[0].tamanho()+line[1].tamanho()+line[2].tamanho()+…+line[n].tamanho();
se caso o n=5
seria 1+2+3+4+5…
tem alguma forma de fazer??

outra perguntinha…
é possivel em um loop, eu escrever em um array [b+1]
exemplo

for (int b = 0; b < repeat; b++){ line[b] = new Lines(point[b+1], point[b]); line[repeat] = new Lines(point[repeat], point[0]);
ou tem alguma forma de expressar esse termo?
obrigado

TintinSt, você colocou no tópico a resposta.
Você precisa de um “loop” ou também conhecido como “laço de repetição”.

Há algumas formas de realizar isso, como do-while, while, for…
Você precisa ver qual opção se encaixa melhor na sua necessidade e realizar a “varredura” no seu array.

Só um cuidado, quando usa-se array “primitivo”, ele possui tamanho fixo, logo, se você tentar acessar uma posição inexistente, o mesmo lançará uma exceção:
Exemplo:

//tamanho 3, sendo, 0, 1 e 2 as posições private String[] array = new String[] {"a", "b", "c"}; System.out.println("Posicao 1: " + array[0]); //vai dar erro System.out.println("Posicao 3: " + array[3]);

Veja que são três posições, mas começa em 0, ok?
O resto é lógica e eu sei que você consegue. Qualquer coisa, poste o código que ajudamos novamente.

Pode gerar exception caso acesse posição inexistente.

double tam = 0 for(int i = 0; i < max; i++){ tam+=line[i].tamanho(); }

Caso queria percorrer a array toda coloque line.leght no lugar de max ou use um foreach.

Não entendi a segunda pergunta.

assim o programa ocorre assim…
a pessoa da as coordenadas de 3 pontos (as coordenadas x e y) e com 2 classes (uma q controi o ponto e outra a linha) ele calcula o tamanho da linha 1 + o tamanho da linha 2 + tamanho da linha 3
estou tentando ampliar o programa para n pontos… ou seja a pessoa digita o número de pontos, e ele constroi n pontos e n linhas e calcula o tamanho delas…
os pontos eu consegui montar… simples
mas o meu problema agora sao as linhas… por que tem q ser o ponto 2 (b+1), menos o ponto 1 (b)… e por isso tentei com esse loop… mas já vi que nao deu certo…
alguma sugestao talvez?

[quote]Linie[]line;
line = new Linie[repeat];

    for (int b = 0; b < repeat; b++){
        line[b] = new Linie(punkt[b+1], punkt[b]);
        line[repeat] = new Linie(punkt[repeat], punkt[0]);[/quote]

Então seria sempre o ponto x+1 - x?
Se for o caso, é só tu somar o ponto atual + 1, verificando se essa soma não é igual ou maior que a quantidade de linhas.

Porque se for igual, tipo 3, seu array tem 0, 1 e 2, como expliquei.
Não seria basicamente essa a lógica?:slight_smile:

não entendi bem ao certo…

for (int b = 0 ; b < repeat; b++){ line[b] = new Linie(point[(b+1)], point[b]);
eu to tentando sempre fazer o dessa maneira:
b=0
ai um ponto seria 1, e o outro ponto seria 0
b=1
ai um seria 2 e outro 1

meio que ponto sempre
point[(b+1)] e point[b]

to tentando deixar isso no loop por que está diretamente ligado com o n repeat (número de pontos q a pessoa escreve quer calcular)

Sem problemas.
Mas o que pode falhar nessa sua lógica ? Simples, acessar um índice do seu vetor que não exista.

Pensa comigo, é point[(b+1)] e point[b] certo ? Ele acessa os índices do vetor “point”.
Se o vetor “point” tiver 10 posições e b chegar a 9, já dá erro. Pois teria:

point[10] = 0, 1, 2…9, 10 não existe. Compreende ?
A não ser que a sua variável, “repeat”, do seu laço de repetição seja algo como:

repeat = point.lenght -1.

Caso contrário, precisa verificar na mão mesmo.
Abraços.

ahh agora entendi, obrigado.
e tem algum jeito de resolver isso?
algum jeito de colocar fazer isso funcionar?
repeat é algum número que alguem digitar. qualquer numero inteiro.
obrigadooo!

[quote=TintinSt]ahh agora entendi, obrigado.
e tem algum jeito de resolver isso?
algum jeito de colocar fazer isso funcionar?
repeat é algum número que alguem digitar. qualquer numero inteiro.
obrigadooo![/quote]

Bom, ai você precisa entender o seguinte. Quando se define um array, ele possui tamanho fixo, caso contrário, você precisa trabalhar com array dinâmico, ou seja, um array que aumente o seu tamanho de acordo com a necessidade. Como não estamos falando em nenhuma classe da Collection, vamos tratar seu array “point” com um tamanho fixo.

Se “repeat” pode ser qualquer número, o que tu precisa garantir é que não vá acessar uma posição inválida do array, logo:

for (int b = 0 ; b < repeat; b++) {  
    if (point.length < (b+1)) {
        line[b] = new Linie(point[(b+1)], point[b]);  
    }
}

Porque “menor que (b+1)” ? Porque se deixarmos menor apenas que “b”, quando você fizer b+1 vai ser igual a length, correto ?
Logo, ele acessaria uma posição inexistente, ou seja, um a mais que ele possui como válida. Ali tu pode user um “else” se julgar necessário, enfim, adapta a lógica conforme sua necessidade, mas era isso que eu me referia, evitar o acesso a uma posição inexistente no array.

Abraços.

entao para outros que tiverem dúvidas eu consegui resolver da seguinte maneira
repeat sao os pontos que foram definidos. Repeat é o número de pontos que foram criados
para criar a reta entre os pontos tem q usar pitagoras (coordenadas x,y)
já q para por exemplo 3 pontos teremos 2 linhas (é uma sequencia de linhas), teremos repeat - 1 linhas
e com isso o loop funciona…