arquivo texto, vetor

1. arquivo texto, vetor

Pedro
javamizer

(usa Suse)

Enviado em 12/06/2008 - 22:38h

Amigos, estou tentando fazer um aplicativo que lê um arquivo texto que contem números, então farei alguns calculos com esses numeros e irei criar um outro arquivo texto com o resultado do calculo, mas o programa está armazenando no vetor os numeros da tabela ASCII equivalentes aos que estão no arquivo texto, por exemplo se leio o numero "50" no arquivo coloco em uma variável a (a=50), então fasso a=a, o resultado é 4!, pois 50 na tabela ASCII é 2! Segue o trecho do código:

BufferedReader reader = new BufferedReader(streamReader);
try {FileWriter fileWriter = new FileWriter("/arquivoalvo.txt");
PrintWriter writer = new PrintWriter(fileWriter);
char[] c = new char[5];
reader.read(c);
writer.print(c[0]);
writer.close();
fileWriter.close();
reader.close();
streamReader.close();
stream.close();
} catch (IOException ex) { Logger.getLogger(JFrame1.class.getName()).log(Level.SEVERE, null, ex);


  


2. Re: arquivo texto, vetor

Fagner Amaral de Souza Candido
f_Candido

(usa Ubuntu)

Enviado em 12/06/2008 - 22:51h

Bom se você vai ler números, porque um array de char's? Não faz sentido. Use o tipo certo. Caso não saiba de antemão o tamanho do arquivo, use alguma Collection.

Abraços


3. int[]

Pedro
javamizer

(usa Suse)

Enviado em 13/06/2008 - 02:22h

É que se eu criar um "int[]" o método read() do objeto reader só aceita "char" como argumento... como eu leio os caracteres, ou numeros individualmente no buffer de entrada sem eles?
Tô tentando migrar de C++ pra Java, mas tá difícil...

segue o código completo:



private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

try {
FileInputStream stream = new FileInputStream("/home/im/Desktop/arquivo.txt");
InputStreamReader streamReader = new InputStreamReader(stream);
BufferedReader reader = new BufferedReader(streamReader);

try {
FileWriter fileWriter = new FileWriter("/home/im/Desktop/arquivoalvo.txt");
PrintWriter writer = new PrintWriter(fileWriter);
char[] c = new char[5];
reader.read(c);
int a=c[0];
writer.print(a*2);
//a saída é "98"

writer.close();
fileWriter.close();
reader.close();
streamReader.close();
stream.close();
}
catch (IOException ex) {
Logger.getLogger(JFrame1.class.getName()).log(Level.SEVERE, null, ex);
}

} catch (FileNotFoundException ex) {
Logger.getLogger(JFrame1.class.getName()).log(Level.SEVERE, null, ex);
}


}


4. FileWriter

Pedro
javamizer

(usa Suse)

Enviado em 13/06/2008 - 03:26h

Parece que a classe FileWriter que estava fazendo a tal conversão misteriosa, com esse código consigo fazer adições e subtrações nos numeros, mas ainda não consigo fazer multiplicações...



{

try {
FileInputStream stream = new FileInputStream("/home/im/Desktop/arquivo.txt");
DataInputStream reader = new DataInputStream(stream);

try {


FileOutputStream os = new FileOutputStream("/home/im/Desktop/arquivoalvo.txt");
DataOutputStream writing = new DataOutputStream(os);


byte[] c = new byte[5];
reader.read(c);
int a=c[2];
writing.write(a-1); //tira 1 de c[2]...
writing.write(a+1); //soma 1 em c[2]...
writing.write(a*1); //erro
writing.write(a/1); //erro

os.close();
reader.close();
writing.close();
stream.close();
}
catch (IOException ex) {
Logger.getLogger(JFrame1.class.getName()).log(Level.SEVERE, null, ex);
}

} catch (FileNotFoundException ex) {
Logger.getLogger(JFrame1.class.getName()).log(Level.SEVERE, null, ex);
}


}


5. Re: arquivo texto, vetor

Denis Doria
thuck

(usa Debian)

Enviado em 13/06/2008 - 09:39h

Bem... não entendo uma coisa cara, pq vc não lê linha a linha e depois trata a linha? fica bem mais simples para trabalhar.

Se vc está lendo char a char, como vc está tratando dos numeros acima de 9? e os números negativos ? e os números reais? Usar int é realmente a solução?

Creio que a melhor forma de converter seria usando a classe Interger, ela possui um método chamado:

parseInt(string)

então vc faria:

String s = <char>.toString();

int i = Integer.parseInt(s);








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts