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.
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?
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.
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…