Programa nao roda

16 respostas
A

o programa abaixo tem erro alguem pode me dizer onde e como eu concerto?
não sei programar em java.
se alguem poder me ajudar agradeço.

:lol:
private final static String DADOS = "agenda.txt"; 
 protected static String carregaDados() {
        String texto = "";
        StringBuffer temp = new StringBuffer();
        File arq = new File(DADOS);
 
        try {
            if (arq.exists()) {//Verifico se o arquivo existe.
                // lendo arquivo
                FileReader arquivo = new FileReader(arq);
                BufferedReader ler = new BufferedReader(arquivo);
                // Colocando num StringBuffer que é muito mais rápido e ocupa
                // menos memória que +=
                boolean fim = false;
                //Lembrando que o método readLine() retorna null quando chega ao fim do arquivo...
                while (!fim) {
                    String linha = ler.readLine();
                    if (linha == null)
                        fim = true;
                    else
                        temp.append(linha);
                    System.out.println("Leu:");
 
                }
 
                texto = temp.toString(); //convertendo o StringBuffer para String
                // Fechando
                ler.close();
                arquivo.close();
            } else
                arq.createNewFile();// Criando Arquivo
        } catch (IOException erro) {
            System.out.print("Erro 01 :" + erro.toString());
        } catch (SecurityException erro2) {
            System.out.print("Erro 02 :" + erro2.toString());
        }
        return texto;
 } 
 protected static String[][] pegaDados() {
        // Carregando Dados
        String nome = carregaDados();// Pegando retorno de carregaDados();
        if (nome.equals("")) {//Se não encontrou nada...
            nome = "Agenda Simples;Marcus Becker";
        }//Se encontrou algo...
        // Formatando os Dados
 
        //Lembrando que o nome e o telefone são separados pelo 
        //caractere ?;? (ponto-e-vírgula)
        String[] arrNome = nome.split(";");
 
        //Como para o arrNome eu coloquei o nome e o telefone, o array de 
        //dados vai ter apenas metade (só o nome) contendo 2 
        //dimensões (nome e telefone)m então divido o tamanho dele por 2.
        String[][] dados = new String[(arrNome.length / 2)][2];
        for (int i = 0, j = 0; i < (arrNome.length - 1); i += 2, j++) {
            dados[j][0] = arrNome[i];
            dados[j][1] = arrNome[i + 1];
        }
        //Aqui eu adiciono ao array dados os nomes e telefones, como sei que 
        //sempre vem primeiro o nome e depois o telefone 
        //referente a esse nome, adiciono os elementos 0 e 1 do arrNome, depois 
        //2 e 3, depois 4 e 5, assim por diante sempre 
        //incrementando o i em 2 (por que se não seria 0 e 1, 1 e 2 ...), já o j 
        //serve para indicar o locar no array dados onde 
        //ficarão os dados... Nem eu mesmo entendi de primeira essa parte do código.
 
        return dados; //Retorno os dados para a tabela (veja mais a frente).
 } 
 //Recebe os dados já formatados, separado pelo ?;?... nome;telefone;nome;telefone...
 protected static void salvarDados(String texto) { 
        File arq = new File(DADOS);
        try {
            if (arq.exists()) {//Se o arquivo existir ele salva, se não, eu não sei....
                FileWriter arquivo = new FileWriter(arq);
                BufferedWriter grava = new BufferedWriter(arquivo);
                grava.write(texto);
                grava.close();
                arquivo.close();
            }
        } catch (IOException e) {
            System.out.print("Erro 01 :" + e.toString());
        } catch (SecurityException erro2) {
            System.out.print("Erro 02 :" + erro2.toString());
        }
 } 
   protected static void salvaTabela(DefaultTableModel modelo) { //Recebendo o objeto
        String dados = "";
        StringBuffer temp = new StringBuffer(); //Buffer é mais rápido...
        for (int i = 0; i < modelo.getRowCount(); i++) {
            String nome = (String) modelo.getValueAt(i, 0);
            String tel = (String) modelo.getValueAt(i, 1);
            if (!nome.equals("")) {//Se o campo nome não estiver vazio...
                    //Se o campo telefone for menor que 7 ele não contem um 
                //numero telefônico válido... 
                //então substituo ele pelo hífen.
                if (tel.trim().length() < 7)
                    tel = "-";
                else {
                    tel = tel.trim();//tirando espaços em branco...
 
                    //o ; é usado para separar os dado, para evitar erros
                    //inesperados eu substitui sem dó, ele por nada.
                    tel = tel.replaceAll(";", "");
                }
                nome = nome.trim();
                nome = nome.replaceAll(";", "");
                //Aqui um exemplo de um método lento, nunca usem.
                // dados += nome + " ; " + tel + " ; "; 
                temp.append(nome + ";" + tel + ";"); // forma correta!
                System.out.println("Nome: " + nome + "\t Tel: " + tel);
            }
        }
        dados = temp.toString();
        salvarDados(dados); //Chamando o método salva dados.
 } 
  protected static void ordenaTabela(DefaultTableModel modelo) {
        StringBuffer temp = new StringBuffer();
        String dados[] = new String[modelo.getRowCount()];
        for (int i = 0; i < modelo.getRowCount(); i++) {
            String valorNome = (String) modelo.getValueAt(i, 0);
            String valorTel = (String) modelo.getValueAt(i, 1);
            // Tirando Valores em Branco...
            if (valorNome.trim().length() <= 0)
                valorNome = "";
            if (valorTel.trim().length() <= 0)
                valorTel = "";
 
            dados[i] = valorNome + " ;" + valorTel + ";";
 
        }
        Arrays.sort(dados);
        // redefineTabela(modelo,dados);
        for (int i = 0; i < dados.length; i++) {
            temp.append(dados[i]);
            System.out.println("Temp: " + dados[i]);
        }
        String nome = temp.toString();
        salvarDados(nome);
 }
  final String[] COLUNAS = new String[]{"Nome","Telefone"};
  DefaultTableModel modelo = new DefaultTableModel(NovoMetodos.pegaDados(),COLUNAS);

acho que a linha que vcs falaram é o numero que aparece depois do nome do programa
se for isso
linha 1, 2 e 141 'classe' or 'interface' expected

16 Respostas

CintiaDR

Qual o erro? Em que linha?

Se for de execução, qual a excessão? Em que linha?

O que o programa não faz que deveria fazer?

Por favor, use a tag code para códigos fontes…

Você seguiu o tutorial http://www.guj.com.br/java.tutorial.artigo.183.1.guj em todos os passos?

ViniGodoy

Oi, além do que a Cintia falou, você esqueceu também de formatar seu código com a tag code.

Ajude quem quer te ajudar! :slight_smile:

Se você ainda não sabe fazer isso, dá uma lida nesse tópico:
http://www.guj.com.br/posts/list/50115.java

A

acho que a formatação é assim muito obrigado
o problema é na execução da 3 erros

CintiaDR

Ok, acho que vc nunca programou em linguagem orientada à objeto, certo? Vc já programou em que? Alguma linguagem não para web?

Então, todo arquivo em java é uma classe - deixe para entender as interfaces depois … - (veja no GUJ por exemplo o hello world). Tem muito tutorial aqui mesmo no GUJ (use o mecanismo de busca se quiser) e é disto que ele deve estar reclamando. Uma classe tem variáveis e métodos, incluindo o método main…

Eu sugiro que vc comece com exemplos AINDA mais simples, para pegar o ritmo da coisa…

A

muito obirgado.
é que eu preciso apresentar um programa na segunda
e fica complicado
muito obirgado mesmo assim

H

Comunicação e tudo.

Será que você poderia colocar as mensagens de erro aqui ? É não quantos erros estão ocorrendo.

CintiaDR

Hugo, ele colocou os erros logo abaixo do código.

A
public class Agenda{
 private final static String DADOS = "agenda.txt";
 }
 protected static String carregaDados() {
        String texto = "";
        StringBuffer temp = new StringBuffer();
        File arq = new File(DADOS);
 
        try {
            if (arq.exists()) {//Verifico se o arquivo existe.
                // lendo arquivo
                FileReader arquivo = new FileReader(arq);
                BufferedReader ler = new BufferedReader(arquivo);
                // Colocando num StringBuffer que é muito mais rápido e ocupa
                // menos memória que +=
                boolean fim = false;
                //Lembrando que o método readLine() retorna null quando chega ao fim do arquivo...
                while (!fim) {
                    String linha = ler.readLine();
                    if (linha == null)
                        fim = true;
                    else
                        temp.append(linha);
                    System.out.println("Leu:");
 
                }
 
                texto = temp.toString(); //convertendo o StringBuffer para String
                // Fechando
                ler.close();
                arquivo.close();
            } else
                arq.createNewFile();// Criando Arquivo
        } catch (IOException erro) {
            System.out.print("Erro 01 :" + erro.toString());
        } catch (SecurityException erro2) {
            System.out.print("Erro 02 :" + erro2.toString());
        }
        return texto;
 } 
 
 protected static String[][] pegaDados() {
        // Carregando Dados
        String nome = carregaDados();// Pegando retorno de carregaDados();
        if (nome.equals("")) {//Se não encontrou nada...
            nome = "Agenda Simples;Marcus Becker";
        }//Se encontrou algo...
        // Formatando os Dados
 
        //Lembrando que o nome e o telefone são separados pelo 
        //caractere ?;? (ponto-e-vírgula)
        String[] arrNome = nome.split(";");
 
        //Como para o arrNome eu coloquei o nome e o telefone, o array de 
        //dados vai ter apenas metade (só o nome) contendo 2 
        //dimensões (nome e telefone)m então divido o tamanho dele por 2.
        String[][] dados = new String[(arrNome.length / 2)][2];
        for (int i = 0, j = 0; i < (arrNome.length - 1); i += 2, j++) {
            dados[j][0] = arrNome[i];
            dados[j][1] = arrNome[i + 1];
        }
        //Aqui eu adiciono ao array dados os nomes e telefones, como sei que 
        //sempre vem primeiro o nome e depois o telefone 
        //referente a esse nome, adiciono os elementos 0 e 1 do arrNome, depois 
        //2 e 3, depois 4 e 5, assim por diante sempre 
        //incrementando o i em 2 (por que se não seria 0 e 1, 1 e 2 ...), já o j 
        //serve para indicar o locar no array dados onde 
        //ficarão os dados... Nem eu mesmo entendi de primeira essa parte do código.
 
        return dados; //Retorno os dados para a tabela (veja mais a frente).
 } 
 //Recebe os dados já formatados, separado pelo ?;?... nome;telefone;nome;telefone...
 protected static void salvarDados(String texto) { 
        File arq = new File(DADOS);
        try {
            if (arq.exists()) {//Se o arquivo existir ele salva, se não, eu não sei....
                FileWriter arquivo = new FileWriter(arq);
                BufferedWriter grava = new BufferedWriter(arquivo);
                grava.write(texto);
                grava.close();
                arquivo.close();
            }
        } catch (IOException e) {
            System.out.print("Erro 01 :" + e.toString());
        } catch (SecurityException erro2) {
            System.out.print("Erro 02 :" + erro2.toString());
        }
 } 
   protected static void salvaTabela(DefaultTableModel modelo) { //Recebendo o objeto
        String dados = "";
        StringBuffer temp = new StringBuffer(); //Buffer é mais rápido...
        for (int i = 0; i < modelo.getRowCount(); i++) {
            String nome = (String) modelo.getValueAt(i, 0);
            String tel = (String) modelo.getValueAt(i, 1);
            if (!nome.equals("")) {//Se o campo nome não estiver vazio...
                    //Se o campo telefone for menor que 7 ele não contem um 
                //numero telefônico válido... 
                //então substituo ele pelo hífen.
                if (tel.trim().length() < 7)
                    tel = "-";
                else {
                    tel = tel.trim();//tirando espaços em branco...
 
                    //o ; é usado para separar os dado, para evitar erros
                    //inesperados eu substitui sem dó, ele por nada.
                    tel = tel.replaceAll(";", "");
                }
                nome = nome.trim();
                nome = nome.replaceAll(";", "");
                //Aqui um exemplo de um método lento, nunca usem.
                // dados += nome + " ; " + tel + " ; "; 
                temp.append(nome + ";" + tel + ";"); // forma correta!
                System.out.println("Nome: " + nome + "\t Tel: " + tel);
            }
        }
        dados = temp.toString();
        salvarDados(dados); //Chamando o método salva dados.
 } 
  protected static void ordenaTabela(DefaultTableModel modelo) {
        StringBuffer temp = new StringBuffer();
        String dados[] = new String[modelo.getRowCount()];
        for (int i = 0; i < modelo.getRowCount(); i++) {
            String valorNome = (String) modelo.getValueAt(i, 0);
            String valorTel = (String) modelo.getValueAt(i, 1);
            // Tirando Valores em Branco...
            if (valorNome.trim().length() <= 0)
                valorNome = "";
            if (valorTel.trim().length() <= 0)
                valorTel = "";
 
            dados[i] = valorNome + " ;" + valorTel + ";";
 
        }
        Arrays.sort(dados);
        // redefineTabela(modelo,dados);
        for (int i = 0; i < dados.length; i++) {
            temp.append(dados[i]);
            System.out.println("Temp: " + dados[i]);
        }
        String nome = temp.toString();
        salvarDados(nome);
 }
  final String[] COLUNAS = new String[]{"Nome","Telefone"};
 
  DefaultTableModel modelo = new DefaultTableModel(NovoMetodos.pegaDados(),COLUNAS);

eu mudei a linha 1 e agora esta dando erro na linha 4 e 145 "class ou interface expected.
eu faço a mesma coisa nestas linhas ? e em que lugar eu devo colocar a chave final? eu uso o nome da classe igual a da linha 4 e 141? ou não é isso? desde ja muito obrigado

H

Esse erro foi simples, da uma olhada na linha três (3) do post anterior. Tem uma chave fechando a classe e logo abaixo você está defindo um método para a classe.

H

[u]Na linha 143 também tem um erro , agora está assim:

final String[] COLUNAS = new String[]{"Nome","Telefone"};

O correto não seria

final String[] COLUNAS = {"Nome","Telefone"};

Falei besteira agora. rsrsrs

A

então eu devo fechar no fim do programa é isso?

H
public class Modelo { // Comeco da Classe

      // Seus atributos

      // Seus metodos

} // Final da Classe

Isso mesmo, você deve fechar a classe somente no final.

A

e o erro da linha 3 agora e 144 como faço?

A

nossa agora deu erro pra caramba

A

linhas 88,118,144,6,6,11,11,12,12,33,73,73,76,76,77,77,82,133,144,144,
cannot find simbol que é isso?

CintiaDR

Já tentou buscar por [google]cannot find symbol java[/google] no google?

Criado 23 de novembro de 2007
Ultima resposta 24 de nov. de 2007
Respostas 16
Participantes 4