Olá, bem…
Eu preciso fazer um programinha para balanceamento de simbolos, utilizando uma pilha, eu ja fiz a lógica do programinha, porém agora preciso realizar utilizando um arquivo de texto, por exemplo, eu abro o arquivo de texto varro ele caracter por caracter, para retornar um erro ou uma mensagem dizendo que o codigo esta correto…
Gostaria de saber se alguem teria alguma idéia pra mim de como posso fazer isto, eu até pesquisei algumas classes como FileReader, BufferedReader, mais nao deu certo…
O principal seria, como abrir um arquivo, depois como pegar caracter por caracter, e como percorrer até o final do arquivo.
:shock:
Valew
Uma dica, procure no sistema de busca do site, vc encontrará varios posts sobre o assunto.
pesquisei por "ler arquivo texto
ja na primeira aparece este http://www.guj.com.br/posts/list/999.java#4590
O programa a seguir lê um arquivo-texto caracter por caracter. Pelo que você disse, pode ser que você tenha de voltar um ou mais caracteres ("backtracking"), então vou dar um exemplo com PushbackReader, que permite tal manipula;áo
import java.io.FileReader;
import java.io.IOException;
import java.io.PushbackReader;
public class TestePushback {
/**
* Este programa lê o arquivo-texto "c:\teste.txt", e conta quantas
* letras maiúsculas e minúsculas ele tem. Além disso, ele troca 'ã' por 'a'
* na hora de contar os totais.
* @param args
*/
public static void main(String[] args) throws IOException {
PushbackReader pbr = new PushbackReader (new FileReader ("c:\teste.txt"));
int nLetrasMaiusculas = 0, nLetrasMinusculas = 0, total = 0;
for (int b = pbr.read(); b >= 0; b = pbr.read()) {
char ch = (char) b;
if ('A' <= ch && ch <= 'Z') {
nLetrasMaiusculas++;
} else if ('a' <= ch && ch <= 'z') {
nLetrasMaiusculas--;
} else if (ch == 'ã') {
pbr.unread('a'); // isto "deslê" o caracter 'ã' e o troca por 'a'
}
total++;
}
pbr.close();
System.out.printf ("Maiusculas = %d, minusculas = %d, total = %d%n", nLetrasMaiusculas, nLetrasMinusculas, total);
}
}
[quote=thingol]O programa a seguir lê um arquivo-texto caracter por caracter. Pelo que você disse, pode ser que você tenha de voltar um ou mais caracteres ("backtracking"), então vou dar um exemplo com PushbackReader, que permite tal manipula;áo
[code]
import java.io.FileReader;
import java.io.IOException;
import java.io.PushbackReader;
public class TestePushback {
/**
* Este programa lê o arquivo-texto "c:\teste.txt", e conta quantas
* letras maiúsculas e minúsculas ele tem. Além disso, ele troca 'ã' por 'a'
* na hora de contar os totais.
* @param args
*/
public static void main(String[] args) throws IOException {
PushbackReader pbr = new PushbackReader (new FileReader ("c:\teste.txt"));
int nLetrasMaiusculas = 0, nLetrasMinusculas = 0, total = 0;
for (int b = pbr.read(); b >= 0; b = pbr.read()) {
char ch = (char) b;
if ('A' <= ch && ch <= 'Z') {
nLetrasMaiusculas++;
} else if ('a' <= ch && ch <= 'z') {
nLetrasMaiusculas--;
} else if (ch == 'ã') {
pbr.unread('a'); // isto "deslê" o caracter 'ã' e o troca por 'a'
}
total++;
}
pbr.close();
System.out.printf ("Maiusculas = %d, minusculas = %d, total = %d%n", nLetrasMaiusculas, nLetrasMinusculas, total);
}
}
[/code][/quote]
Essa sua dica está me ajudando bastante.
Mas ainda não consegui resolver meu problema por completo =)
Valew
[quote=marcio_jagua][quote=thingol]O programa a seguir lê um arquivo-texto caracter por caracter. Pelo que você disse, pode ser que você tenha de voltar um ou mais caracteres ("backtracking"), então vou dar um exemplo com PushbackReader, que permite tal manipula;áo
[code]
import java.io.FileReader;
import java.io.IOException;
import java.io.PushbackReader;
public class TestePushback {
/**
* Este programa lê o arquivo-texto "c:\teste.txt", e conta quantas
* letras maiúsculas e minúsculas ele tem. Além disso, ele troca 'ã' por 'a'
* na hora de contar os totais.
* @param args
*/
public static void main(String[] args) throws IOException {
PushbackReader pbr = new PushbackReader (new FileReader ("c:\teste.txt"));
int nLetrasMaiusculas = 0, nLetrasMinusculas = 0, total = 0;
for (int b = pbr.read(); b >= 0; b = pbr.read()) {
char ch = (char) b;
if ('A' <= ch && ch <= 'Z') {
nLetrasMaiusculas++;
} else if ('a' <= ch && ch <= 'z') {
nLetrasMaiusculas--;
} else if (ch == 'ã') {
pbr.unread('a'); // isto "deslê" o caracter 'ã' e o troca por 'a'
}
total++;
}
pbr.close();
System.out.printf ("Maiusculas = %d, minusculas = %d, total = %d%n", nLetrasMaiusculas, nLetrasMinusculas, total);
}
}
[/code][/quote]
Essa sua dica está me ajudando bastante.
Mas ainda não consegui resolver meu problema por completo =)
Valew[/quote]
Alguem tem algum exemplo de como balancear simbolos no java, utilizando pilha?