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.
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
importjava.io.FileReader;importjava.io.IOException;importjava.io.PushbackReader;publicclassTestePushback{/** * 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 */publicstaticvoidmain(String[]args)throwsIOException{PushbackReaderpbr=newPushbackReader(newFileReader("c:\teste.txt"));intnLetrasMaiusculas=0,nLetrasMinusculas=0,total=0;for(intb=pbr.read();b>=0;b=pbr.read()){charch=(char)b;if('A'<=ch&&ch<='Z'){nLetrasMaiusculas++;}elseif('a'<=ch&&ch<='z'){nLetrasMaiusculas--;}elseif(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);}}
M
marcio_jagua
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
importjava.io.FileReader;importjava.io.IOException;importjava.io.PushbackReader;publicclassTestePushback{/** * 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 */publicstaticvoidmain(String[]args)throwsIOException{PushbackReaderpbr=newPushbackReader(newFileReader("c:\teste.txt"));intnLetrasMaiusculas=0,nLetrasMinusculas=0,total=0;for(intb=pbr.read();b>=0;b=pbr.read()){charch=(char)b;if('A'<=ch&&ch<='Z'){nLetrasMaiusculas++;}elseif('a'<=ch&&ch<='z'){nLetrasMaiusculas--;}elseif(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);}}
Essa sua dica está me ajudando bastante.
Mas ainda não consegui resolver meu problema por completo =)
Valew
M
marcio_jagua
marcio_jagua:
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
importjava.io.FileReader;importjava.io.IOException;importjava.io.PushbackReader;publicclassTestePushback{/** * 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 */publicstaticvoidmain(String[]args)throwsIOException{PushbackReaderpbr=newPushbackReader(newFileReader("c:\teste.txt"));intnLetrasMaiusculas=0,nLetrasMinusculas=0,total=0;for(intb=pbr.read();b>=0;b=pbr.read()){charch=(char)b;if('A'<=ch&&ch<='Z'){nLetrasMaiusculas++;}elseif('a'<=ch&&ch<='z'){nLetrasMaiusculas--;}elseif(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);}}
Essa sua dica está me ajudando bastante.
Mas ainda não consegui resolver meu problema por completo =)
Valew
Alguem tem algum exemplo de como balancear simbolos no java, utilizando pilha?