Boa Tarde pessoal! Esse é meu primeiro tópico, estou precisando muito de ajuda *¬¬!
Estou com esse código, que faz a leitura de um arquivo de texto contendo umas entradas, essas entradas são armazenadas em uma string (array_depositos). Queria saber como faço para passar essa string para um vetor de inteiros, cada valor em uma posição do vetor. No código abaixo existe um trecho de conversão mas não consegui usar ele para a outra string. Para quem conhece esse é o problema do "Cofrinho da Vó Vitoria".
importjava.io.BufferedReader;importjava.io.FileReader;importjava.io.IOException;publicclassTrabalho{publicstaticvoidmain(String[]args){try{//ARQUIVO QUE SERA 'LIDO'BufferedReaderin=newBufferedReader(newFileReader("entrada1.txt"));Stringstr;String[]array_depositos;intnum_depositos=0;inti=0;while(in.ready()){str=in.readLine();// a primeira linha do arquivo contem o numero de depositosif(i==0){//Converte uma string para inteironum_depositos=Integer.parseInt(str);System.out.println("VOVO FEZ: "+num_depositos+" DEPOSITOS");}else{if(i<=num_depositos){//'quebra' uma string separada por espacoarray_depositos=str.split(" ");System.out.println("DEPOSITO: "+i+": JOAO: "+array_depositos[0]+" ZE: "+array_depositos[1]);}}i++;}in.close();//REALIZA O PROCESSAMENTO PRA SABER SE VOVO DEPOSITOU MAIS PARA JOAO OU PARA ZEZINHO//<COMPLETAR COM O CODIGO>}catch(IOExceptione){e.printStackTrace();}}}
Você poderia pegar cada valor(String) e converter para número com o método parseInt da classe Integer.
N
nedotavio1807
Eu tentei fazer algo parecido mas não deu certo;
int depositos_int [];
depositos_int[0] = Integer.parseInt( array_depositos[0] );
Rodrigo_Sasaki
Precisam mesmo ser arrays?
Se forem você precisa inicializar o array de int com o mesmo tamanho do array de String, assim:int[] depositos = new int[array_depositos.length];E depois disso você itera um array passando os valores para o outro.
N
nedotavio1807
Obrigado pela ajuda,
Precisa sim;
Mas não deu certo :/, ta falando que a variável array_depositos não foi inicializada, e ela foi mas como array de string.
Rodrigo_Sasaki
Isso tem que ser feito depois que você faz o split que inicializa o seu array.
N
nedotavio1807
Ok, a parte da inicialização agora deu certo;
mas só esta armazenando a posição [1] do array, olhe como eu fiz:
{if(i<=num_depositos){//'quebra' uma string separada por espacoarray_depositos=str.split(" ");int[]depositos=newint[array_depositos.length];depositos[i]=Integer.parseInt(array_depositos[i]);System.out.println("DEPOSITO: "+i+": JOAO: "+array_depositos[0]+" ZE: "+array_depositos[1]);System.out.println("DEPOSITO:"+depositos[i]);}}i++;}
Rodrigo_Sasaki
tem que existir um laço for dentro desse if.
Na verdade não precisa necessariamente ser um for, mas é o que eu sugiro.
N
nedotavio1807
Continuou só armazenando a posição [1], mesmo colocando um for, apesar do if estar fazendo o papel do for
Rodrigo_Sasaki
Como você fez o for?
N
nedotavio1807
{if(i<=num_depositos){//'quebra' uma string separada por espacoarray_depositos=str.split(" ");int[]depositos=newint[array_depositos.length];for(intl=0;l<=num_depositos;i++){depositos[i]=Integer.parseInt(array_depositos[i]);System.out.println("DEPOSITO:"+depositos[i]);}System.out.println("DEPOSITO: "+i+": JOAO: "+array_depositos[0]+" ZE: "+array_depositos[1]);}}i++;}
Rodrigo_Sasaki
se você fez o for por ‘l’, você tem que incrementar ‘l’ e usar o índice ‘l’ na atribuição. Cuidado porque você está se confundindo com o índice ‘i’
N
nedotavio1807
Obrigado de novo meu caro pela ajuda :);
Mas esta complicado pra mim, o for so pega os dois primeiros valores e eu não consigo tirar ele de dentro desse if