Amigos, não sei como declarar vetor em java, como declaro o vetor abaixo?
packagetrabalho;publicclassQuarto{publicstaticvoidmain(String[]args){intn,i,m,pi[i];n=InOut.leInt("Por favor entre com o numero de postos de agua");//8m=InOut.leInt("Entre com a distancia intermediaria maxima do competidor");for(i=0;i<n;i++){pi[i]=InOut.leInt("Entre com a distancia entre os postos de agua");}}
[quote]//vetor de inteiros de 100 posiçõesint vetor[]=new int[100];
Era isso?
C
Ckralls
[quote=drsmachado]Cara, se a dúvida é essa
<blockquote>//vetor de inteiros de 100 posiçõesintvetor[]=newint[100];
Era isso?
Aqui nao deu certo, quero saber como declarar vetor especificamente neste codigo, pois a variavel pi vai receber o valor que o usuario digitar, então esse pi deve ser o proprio vetor, entende? Como declaro isso?
wfuertes
packagetrabalho;publicclassQuarto{publicstaticvoidmain(String[]args){intn,i,m,pi[];//pi[i]nãocompila,poiscomoiéuminteiroqueestásendoinicializandonãopodeserusadonestemomento,emesmoque//quepudesseeleteriavalorZEROenãofariasentidoinicarumvetordeZEROposições.Segueabaixoumapossívelsolução.n=InOut.leInt("Por favor entre com o numero de postos de agua");//8m=InOut.leInt("Entre com a distancia intermediaria maxima do competidor");//Provavélsolução:pi=newint[n];//nestecasopiéumvetorcomnposições=>númerodepostosdeágua;for(i=0;i<n;i++){pi[i]=InOut.leInt("Entre com a distancia entre os postos de agua");}}
Seria isso, senão for poderia explicar melhor?
C
Ckralls
wfuertes:
packagetrabalho;publicclassQuarto{publicstaticvoidmain(String[]args){intn,i,m,pi[];//pi[i]nãocompila,poiscomoiéuminteiroqueestásendoinicializandonãopodeserusadonestemomento,emesmoque//quepudesseeleteriavalorZEROenãofariasentidoinicarumvetordeZEROposições.Segueabaixoumapossívelsolução.n=InOut.leInt("Por favor entre com o numero de postos de agua");//8m=InOut.leInt("Entre com a distancia intermediaria maxima do competidor");//Provavélsolução:pi=newint[n];//nestecasopiéumvetorcomnposições=>númerodepostosdeágua;for(i=0;i<n;i++){pi[i]=InOut.leInt("Entre com a distancia entre os postos de agua");}}
Seria isso, senão for poderia explicar melhor?
Ok, deu certinho sim. Agora o código está dando erro na linha 31, esse programinha deve calcular se a distância entre os postos de água for maior que a distancia intermediaria do competidor o competidor não consegue completar a maratona, se for menor ele consegue completar a maratona.
packagetrabalho;publicclassQuarto{publicstaticvoidmain(String[]args){intn,i,m;intpi[];n=InOut.leInt("Por favor entre com o numero de postos de agua");//8m=InOut.leInt("Entre com a distancia intermediaria maxima do competidor");pi=newint[n];//neste caso pi é um vetor com n posições => número de postos de água; for(i=0;i<n;i++){pi[i]=InOut.leInt("Entre com a distancia entre os postos de agua");}if(n>=2&&n<=10000){if(pi[i]<=m){System.out.println("S");}else{System.out.println("N");}}}}
sgaothaich
Se entendi direito o que tu queres, tua condição deveria estar dentro do for.
Mas qual o erro que está retornando?
C
Ckralls
sgaothaich:
Se entendi direito o que tu queres, tua condição deveria estar dentro do for.
Mas qual o erro que está retornando?
Se eu por a condição dentro do for para cada distancia que eu digitar ele vai imprimir,e não e isso oq ue quero, quero que ele imprima, no final do programa, se o competidor vai conseguir ou não completar a maratona.
O que quero saber tb e como posso tirar a media da distancia desses postos de agua, pois creio que se eu tirar a media desses vetores eu posso fazer uma comparação final com o m(desempenho maximo do competidor) e comparando se ele consegue terminar a maratona ou não.
C
Ckralls
Ckralls:
sgaothaich:
Se entendi direito o que tu queres, tua condição deveria estar dentro do for.
Mas qual o erro que está retornando?
Se eu por a condição dentro do for para cada distancia que eu digitar ele vai imprimir,e não e isso oq ue quero, quero que ele imprima, no final do programa, se o competidor vai conseguir ou não completar a maratona.
O que quero saber tb e como posso tirar a media da distancia desses postos de agua, pois creio que se eu tirar a media desses vetores eu posso fazer uma comparação final com o m(desempenho maximo do competidor) e comparando se ele consegue terminar a maratona ou não.
Eu pensei que estava certo, mas o professor disse:
"verificar para todas as distâncias informadas, se a distância do posto seguinte
subtraída da distância anterior é menor que a distância que ele consegue correr
sem beber água. Se houver alguma distância maior, então o algoritmo termina com N, senão termina com S."
Como posso fazer isso? Tentei como esta embaixo e não consegui.
for(i=0;i<n;i++){pi[i]=InOut.leInt("Entre com a distancia entre os postos de agua");//somaVetor=somaVetor+pi[i];//mediaVetor=somaVetor/n;sub=pi[1]-pi[0];}if((n>=2&&n<=10000))//||(somaVetor<=42195)){//if(mediaVetor<=m){if(sub<=m){System.out.println("S");}else{System.out.println("N");}
C
Ckralls
Ckralls:
Ckralls:
sgaothaich:
Se entendi direito o que tu queres, tua condição deveria estar dentro do for.
Mas qual o erro que está retornando?
Se eu por a condição dentro do for para cada distancia que eu digitar ele vai imprimir,e não e isso oq ue quero, quero que ele imprima, no final do programa, se o competidor vai conseguir ou não completar a maratona.
O que quero saber tb e como posso tirar a media da distancia desses postos de agua, pois creio que se eu tirar a media desses vetores eu posso fazer uma comparação final com o m(desempenho maximo do competidor) e comparando se ele consegue terminar a maratona ou não.
Eu pensei que estava certo, mas o professor disse:
"verificar para todas as distâncias informadas, se a distância do posto seguinte
subtraída da distância anterior é menor que a distância que ele consegue correr
sem beber água. Se houver alguma distância maior, então o algoritmo termina com N, senão termina com S."
Como posso fazer isso? Tentei como esta embaixo e não consegui.
Pessoal to quase chegando la, o cadigo abaixo esta representando o seguinte erro na linha 23(netbeans)
"Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at trabalho.maratona.main(maratona.java:23)
Java Result: 1"
Alguém pode me ajudar?
packagetrabalho;publicclassmaratona{publicstaticvoidmain(String[]args){intn,i,m,subtra;intpi[];n=InOut.leInt("Porfavorentrecomonumerodepostosdeagua");//3m=InOut.leInt("Entrecomadistanciaintermediariamaximadocompetidor");pi=newint[n];//neste caso pi é um vetor com n posições => número de postos de água; for(i=0;i<n;i++){pi[i]=InOut.leInt("Entrecomadistanciaentreospostosdeagua");subtra=pi[i+1]-pi[i];//o professor disse q era + ou - assim;}if((n>=2&&n<=10000)||(m<=42195)){if(subtra<=m){System.out.println("S");}else{System.out.println("N");}}}}
nel
Sua exceção diz que está acessando uma posição inexistente no vetor.
Está vendo essa linha:
Não, acho que você não entendeu o que eu quis dizer.
Vou explicar:
int[]vet=newint[3]{1,2,3};System.out.println(vet[0]);System.out.println(vet[1]);System.out.println(vet[2]);//vaigerarexceção"Exception in thread "main"java.lang.ArrayIndexOutOfBoundsException:3System.out.println(vet[3]);
Estou usando uma posição inexistente, inválida, do vetor e gera a exceção.
Grosseiramente, a sua verificação teria de ser algo como:
intindex=i+1;if(index<n){pi[index];}
Entendeu ?
Assim tu garante que o i+1 não vai acessar uma posição inexistente do vetor.
C
Ckralls
nel:
Ckralls:
nel:
Sua exceção diz que está acessando uma posição inexistente no vetor.
Está vendo essa linha:
Não, acho que você não entendeu o que eu quis dizer.
Vou explicar:
int[]vet=newint[3]{1,2,3};System.out.println(vet[0]);System.out.println(vet[1]);System.out.println(vet[2]);//vaigerarexceção"Exception in thread "main"java.lang.ArrayIndexOutOfBoundsException:3System.out.println(vet[3]);
Estou usando uma posição inexistente, inválida, do vetor e gera a exceção.
Grosseiramente, a sua verificação teria de ser algo como:
intindex=i+1;if(index<n){pi[index];}
Entendeu ?
Assim tu garante que o i+1 não vai acessar uma posição inexistente do vetor.
ok, tentei fazer assim:
if(index<n){subtra=posto[index]-posto[i];
mas da erro: "Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - variable i might not have been initialized
at trabalho.maratona.main(maratona.java:9)
Java Result: 1"
nessa linha :
int index = i + 1;
nel
Cadê a variavél i?
Poste o código só completo novamente com as novas alterações
C
Ckralls
nel:
Cadê a variavél i?
Poste o código só completo novamente com as novas alterações :)
packagetrabalho;publicclassmaratona{publicstaticvoidmain(String[]args){intn,i,m,subtra=0;intposto[];intindex=i+1;n=InOut.leInt("Por favor entre com o numero de postos de agua");//3m=InOut.leInt("Entre com a distancia intermediaria maxima do competidor");posto=newint[n];//neste caso pi é um vetor com n posições => número de postos de água; if((n>=2&&n<=10000)&&(m<=42195)){for(i=0;i<n;i++){posto[i]=InOut.leInt("Entre com a distancia entre os postos de agua");if(index<n){posto[index];if(posto[index]<=m){System.out.println("S");}else{System.out.println("N");}}}}}}
nel
Cara, você só está copiando e colando, não está parando para ver o código, faça com calma.
Você não inicializou a variavél i, não tem o que ela somar.
Veja modificação:
for(i=0;i<n;i++){intindex=i+1;posto[i]=InOut.leInt("Entre com a distancia entre os postos de agua");if(index<n){if(posto[index]<=m){System.out.println("S");}else{System.out.println("N");}}}}
Veja que eu declaro a variavél index dentro do laço de repetição, pois esse valor deve ser atualizado a todo momento.
Você precisa fazer verificação constante disso de modo o índice seja atualizado.
Faça com calma, pensa, leia o que eu disse e os outros e tenho certeza que tu vai conseguir :)