• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

mapb_1990

cannot find symbol

17 mensagens neste tópico

ao compilar, da-m este erro:

alguem sabe o k é?

init:
deps-jar:
Compiling 3 source files to D:\Users\mapb_1990\Documents\NetBeansProjects\lapr1\build\classes
D:\Users\mapb_1990\Documents\NetBeansProjects\lapr1\src\main\Main.java:1199: cannot find symbol
symbol  : method maxMin(double[][])
location: class main.CodificadorHTML
        html += CodificadorHTML.maxMin(maxMin);
D:\Users\mapb_1990\Documents\NetBeansProjects\lapr1\src\main\Main.java:1200: cannot find symbol
symbol  : method zeros(double[])
location: class main.CodificadorHTML
        html += CodificadorHTML.zeros(zeros);
D:\Users\mapb_1990\Documents\NetBeansProjects\lapr1\src\main\Main.java:1201: cannot find symbol
symbol  : method minMaxLocais(double[][],java.lang.String)
location: class main.CodificadorHTML
        html += CodificadorHTML.minMaxLocais(max, "Máximos Locais");
D:\Users\mapb_1990\Documents\NetBeansProjects\lapr1\src\main\Main.java:1202: cannot find symbol
symbol  : method minMaxLocais(double[][],java.lang.String)
location: class main.CodificadorHTML
        html += CodificadorHTML.minMaxLocais(min, "Mínimos locais");
4 errors
BUILD FAILED (total time: 0 seconds)

    private static void representarFuncao() throws FileNotFoundException {
        double[][] funcao = new double[2][];
        funcao[0] = Matematica.extrairValoresFuncao(Matematica.lerFuncao("o numerador"));
        funcao[1] = Matematica.extrairValoresFuncao(Matematica.lerFuncao("o denominador"));
        double[][] dim = Matematica.dim("Insira o número de pontos: ");
        double[][] tabela = Matematica.tabelarFuncao(dim, funcao, 1);
        double[][] minMax = Matematica.maxMin(tabela);
        double[] zero = Matematica.zeros(tabela);
        double[][] min = Matematica.minLocais(tabela);
        double[][] max = Matematica.maxLocais(tabela);

        String nome = "", html;
        Formatter htmlFile = new Formatter(new File("funcao.html"));

        //gera HTML
        html = CodificadorHTML.headerHTML("Representação da função", nome);
        html += CodificadorHTML.tableDimensoes(dim, true).replace("Eixo ZZ", "Eixo XX");
        html += CodificadorHTML.projeccoesRecta(true, tabela).replace("Projecção no eixo xz", "Função Tabelada");
        html += CodificadorHTML.maxMin(minMax);
        html += CodificadorHTML.zeros(zero);
        html += CodificadorHTML.minMaxLocais(max, "Máximos Locais");
        html += CodificadorHTML.minMaxLocais(min, "Mínimos locais");
        html += CodificadorHTML.fotterHTML();
        htmlFile.format("%s", html);
        htmlFile.close();

    }

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
package Codificadores;

import main.Auxiliar;

/**
*
* @author mapb_1990
*/
public class CodificadorHTML {

    public static String headerHTML(String title, String description) {
        String html = "<html>\n"
                + "<head>\n"
                + "\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\" />\n"
                + "\t<meta name=\"description\" content=\"" + description + "\">\n"
                + "\t<title>" + title + "</title>\n"
                + styles()
                + "</head>\n"
                + "<body>\n"
                + "<h1>" + title + " " + description + "</h1>\n";
        return html;
    }

    public static String fotterHTML() {
        String html = "<p><address>Grupo 27, LAPR1 - 2008/09</address></p>\n"
                + "</body>\n"
                + "</html>";
        return html;
    }

    public static String styles () {
        String html = "<style type=\"text/css\">\n" +
                "<!--\n" +
                "\tbody { font-family: Tahoma, Verdana, sans-serif; font-size:12px; }\n" +
                "\th1 { font-family: Tahoma, Verdana, sans-serif; font-size:16px; color:#9BBB59; font-weight:bold; }\n" +
                "\th2 { font-family: Tahoma, Verdana, sans-serif; font-size:14px; color:#9BBB59; }\n" +
                "\ttable { color: #000000; border-bottom: solid 2px #000000; border-top: solid 2px #000000; text-align:center; min-width:35%; }\n" +
                "\ttr.header  { background-color:#9BBB59; border-bottom: solid 2px #000000; color: #ffffff; font-weight:bold; }\n" +
                "\ttr.row1 { background-color:#DDDDDD; }\n" +
                "\ttr.row0 { background-color:#FFFFFF; }\n" +
                "\ttd { width: auto; }" +
                "\t.bold { font-weight: bold; text-align:left; width: 40%; }\n" +
                "\t.destaque { background-color:#9BBB59; border-right: solid 2px #000000; color: #ffffff; font-weight:bold; }\n" +
                "-->\n" +
                "</style>\n";
        return html;
    }

    public static String tableDimensoes(double[][] matriz, boolean dim) {
        String html = "<h2>Dimenções</h2>\n" +
                "<table cellpadding=\"5\" cellspacing=\"0\" border=\"0\">\n" +
                "\t<tr class=\"header\">\n" +
                "\t\t<td width=\"100\"></td>\n" +
                (dim?"\t\t<td width=\"50\">Eixo ZZ</td>\n":"\t\t<td>Eixo XX</td>\n\t\t<td>Eixo YY</td>\n") +
                "\t</tr>\n" +
                "\t<tr class=\"row1\">\n" +
                "\t\t<td class=\"bold\">Limite Inferior</td>\n" +
                "\t\t<td>" + Auxiliar.formataNumber(matriz[0][0]) + "</td>\n" +
                (!dim?"\t\t<td>" + Auxiliar.formataNumber(matriz[0][1]) + "</td>\n":"") +
                "\t</tr>\n" +
                "\t<tr class=\"row0\">\n" +
                "\t\t<td class=\"bold\">Limite Superior</td>\n" +
                "\t\t<td>" + Auxiliar.formataNumber(matriz[1][0]) + "</td>\n" +
                (!dim?"\t\t<td>" + Auxiliar.formataNumber(matriz[1][1]) +"</td>\n":"") +
                "\t</tr>\n" +
                "\t<tr class=\"row1\">\n" +
                "\t\t<td class=\"bold\">Número de pontos</td>\n" +
                "\t\t<td>" + Auxiliar.formataNumber(matriz[2][0]) + "</td>\n" +
                (!dim?"\t\t<td>" + Auxiliar.formataNumber(matriz[2][1]) + "</td>\n":"") +
                "\t</tr>\n" +
                "</table>\n";
        return html;
    }

    public static String projeccoesRecta (boolean flag, double[][] matriz) {
        int i;
        String html = "<h2>Projecção no eixo " + (flag?"xz":"yz") + "</h2>\n" +
                "<table cellpadding=\"5\" cellspacing=\"0\" border=\"0\">\n" +
                "\t<tr class=\"header\">\n" +
                "\t\t<td></td>\n";

        for (i = 0; i < matriz[0].length; i++) {
            html += "\t\t<td>" + Auxiliar.formataNumber(matriz[0][i]) + "</td>\n";
        }

        html += "\t</tr>\n" +
                "\t<tr class=\"row1\">\n" +
                "\t\t<td class=\"bold\">" + (flag?"x":"y") + "</td>\n";

        for (i = 0; i < matriz[0].length; i++) {
            if (flag) {
                html += "\t\t<td>" + Auxiliar.formataNumber(matriz[1][i]) + "</td>\n";
            } else {
                html += "\t\t<td>" + Auxiliar.formataNumber(matriz[2][i]) + "</td>\n";
            }
        }

        html += "\t</tr>\n" +
                "</table>\n";

        return html;
    }

    public static String valoresPlano (double[][] matriz) {
        int i,j, nlinhas = matriz.length;
        String html = "<h2>Valores</h2>\n"
                + "<table cellpadding=\"5\" cellspacing=\"0\" border=\"0\">\n"
                + "\t<tr class=\"header\">\n"
                + "\t\t<td></td>";

        //cria linha com os valores do eixo yy
        for (i = 1; i < matriz[0].length; i++) {
            html += "\t\t<td>" + Auxiliar.formataNumber(matriz[0][i]) + "</td>\n";
        }

        html += "\t</tr>\n";

        for (i = 1; i < nlinhas; i++) {
            html += "\t<tr class=\"row" + i%2 + "\">\n";
            for (j = 0; j < matriz[0].length; j++) {
                //cria coluna com os valores do eixo xx
                if(j==0) html += "\t\t<td class=\"bold\">" + Auxiliar.formataNumber(matriz[i][j]) + "</td>\n";
                else html += "\t\t<td>" + Auxiliar.formataNumber(matriz[i][j]) + "</td>\n";
            }
            html += "\t</tr>\n";
        }

        html += "</table>";

        return html;
    }

    public static String tabularFuncao(double[][] matriz) {
        String html = projeccoesRecta(false, matriz);
        html = html.replace("Projecção no eixo yz", "Função Tabelada");
        return html;
    }

    public static String maxMin(double[][] minMax) {
        String html = "<h2>Valor Máximo e Mínimo</h2>\n" +
                "<table cellpadding=\"5\" cellspacing=\"0\" border=\"0\">\n" +
                "\t<tr class=\"header\">\n" +
                "\t\t<td></td><td>Ponto</td><td>Valor</td>\n" +
                "\t</tr>\n" +
                "\t<tr class=\"row1\">\n" +
                "\t\t<td class=\"bold\">Máximo</td>" +
                "\t\t<td>" + Auxiliar.formataNumber(minMax[0][0]) + "</td>" +
                "\t\t<td>" + Auxiliar.formataNumber(minMax[0][1]) + "</td>" +
                "\t</tr>\n" +
                "\t<tr class=\"row2\">\n" +
                "\t\t<td class=\"bold\">Máximo</td>" +
                "\t\t<td>" + Auxiliar.formataNumber(minMax[1][0]) + "</td>" +
                "\t\t<td>" + Auxiliar.formataNumber(minMax[1][1]) + "</td>" +
                "\t</tr>\n" +
                "</table>\n";
        return html;
    }

    public static String zeros (double[] zeros) {
        String html = "<h2>Zeros</h2>\n" +
                "<table cellpadding=\"5\" cellspacing=\"0\" border=\"0\">\n" +
                "\t<tr class=\"row1\">\n" +
                "\t\t<td class=\"destaque\">x</td>";

        for (int i = 0; i < zeros.length; i++) {
            html += "\t\t<td>" + Auxiliar.formataNumber(zeros[i]) + "</td>";
        }

        html += "\t</tr>\n" +
                "</table>\n";

        return html;
    }

    public static String minMaxLocais(double[][] minMaxLocais, String mgs) {
        String html = "<h2>" + mgs + " Locais</h2>\n" +
                "<table cellpadding=\"5\" cellspacing=\"0\" border=\"0\">\n" +
                "\t<tr class=\"header\">\n" +
                "\t\t<td></td>\n\t\t<td>Ponto</td>\n\t\t<td>Valor</td>\n\t</tr>\n";
        for (int i=0; i<minMaxLocais[0].length;i++) {
            html += "\t<tr class=\"row1\">\n" +
                "\t\t<td>" + Auxiliar.formataNumber(minMaxLocais[0][i]) + "</td>" +
                "\t\t<td>" + Auxiliar.formataNumber(minMaxLocais[1][1]) + "</td>" +
                "\t</tr>\n";
        }
        html += "</table>\n";
        return html;
    }


}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

já vi que está tudo public no CodificadorHTML pelo que não será por esse motivo.

como é que estamos de packages? está no mesmo? confirma se estão lá os imports

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

os imports estao lá, senao as seguintes linhas não davam

        //gera HTML
        html = CodificadorHTML.headerHTML("Representação da função", nome);
        html += CodificadorHTML.tableDimensoes(dim, true).replace("Eixo ZZ", "Eixo XX");
        html += CodificadorHTML.projeccoesRecta(true, tabela).replace("Projecção no eixo xz", "Função Tabelada");

29gg2n7.jpg

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pois, também não vejo problema nenhum no código,

muda de estratégia, fechar o netbeans e voltar a abrir, criar um proj novo, compilar em linha de comandos...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

está a dar erro nos últimos 3 métodos da CodificadorHTML, estranho  :dontgetit:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

reparei agora numa cena.

alterei eu linha do codificador, mas ao gerar o html, essa alteração não acontece.

aliás, resolvi ver o codigo fonte da pagina, e modificações k fiz ontem nos estilos, mas n tao a aparecer.

por exemplo:td { width: auto; }

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Hum... ou estou muito cego ou o erro que mostraste não corresponde ao código que colocaste.

No erro aparece "html += CodificadorHTML.maxMin(maxMin);" mas no código, em vez do parametro "maxMin", tens o parametro "minMax", além disso o erro é no método main, estás a invocar apenas a função que colocaste ou existe mais código dentro do main.

Recompila o projecto e verifica se o código é actualizado.

Já agora, porque raio são esses static e public todos? Isto é Java, e esses statics dificilmente estarão aí bem.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

lol. decidi mudar o nome do package, e milagre dos milagres, começou a dar. lol, há coisas estupidas, nao há?

Já agora, porque raio são esses static e public todos? Isto é Java, e esses statics dificilmente estarão aí bem.
não sei. inda tou a aprender e foi assim k me ensinaram :D

outra coisa, se por algum motivo, o programa nao consegui-se escrever no ficheiro, queria que aparecer-se um erro. da para fazer isso com o try .. catch?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

lol. decidi mudar o nome do package, e milagre dos milagres, começou a dar. lol, há coisas estupidas, nao há?

Provavelmente tinhas erros nos nomes ou organização dos packages.

não sei. inda tou a aprender e foi assim k me ensinaram :D

?! Ensinaram-te a colocar todos os métodos como públicos e como métodos da classe? Mas que raio de coisas te ensinam.

outra coisa, se por algum motivo, o programa nao consegui-se escrever no ficheiro, queria que aparecer-se um erro. da para fazer isso com o try .. catch?

Sim, dependendo de como tens o código poderás ter mais ou menos trabalho e estar mais ou menos correcto mas é um dos objectivos da excepções o tratamento de erros.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu pelo código dele, deduzo que esteja no meu curso(LEI-ISEP), visto que os alunos do 1º ano estão numa fase de projecto neste momento. É claro que não o ensinam a colocar todos os métodos como públicos, a inexperiência ou pouca atenção nas aulas é que se traduz nestes erros .

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu pelo código dele, deduzo que esteja no meu curso(LEI-ISEP), visto que os alunos do 1º ano estão numa fase de projecto neste momento. É claro que não o ensinam a colocar todos os métodos como públicos, a inexperiência ou pouca atenção nas aulas é que se traduz nestes erros .

sim, está correcto. ando no 1º Ano do LEI-ISEP.

a mim ensinaram-me a colocar os metodos publicos, privados ou protegidos, como estáticos

tb é certo k nao fui a tds as aulas teoricas, mas das praticas posso falar. em tds os exercicios k a minha turma fez, foi sempre public static ou private static

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

a mim ensinaram-me a colocar os metodos publicos, privados ou protegidos, como estáticos

Bem, não sabendo qual o objectivo da cadeira não poderei dizer muito sobre o assunto, mas aquilo posso dizer é que essa forma de usar Java é um erro. Eventualmente poderão estar a usar a linguagem para outros fins que não a aprendizagem de Java e de POO, mas mesmo assim seria vantajoso para quem está a aprender, aprender usando algumas das regras correctamente.

static é uma palavra reservada que define um método, um bloco de código ou um atributo de uma classe, em oposição a métodos e atributos de instância. Tipicamente, o erro do uso excessivo de static aparece quando se começa a colocar código dentro do método main que não compila, e onde o compilador indica que um método estático não pode aceder a conteúdo não estático, o resultado é que se começa a coloca static em tudo e o código passa a funcionar. Isto está errado e é resolver mal o problema.

Os métodos de instância, que são 99% dos métodos não levam o modificador static, os métodos de classe sim, e esses são invocados usando o nome da classe seguido do método e não usando uma instância ou variável.

Isto não foi uma explicação completa nem pretendia ser, mas espero que sirva para indicar que esse tipo de código está errado se estiverem a querer programar em Java.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Sim, dependendo de como tens o código poderás ter mais ou menos trabalho e estar mais ou menos correcto mas é um dos objectivos da excepções o tratamento de erros.

por exemplo, neste codigo como ficava:

        
Formatter htmlFile = new Formatter(new File("funcao.html"));
        //gera HTML
        html = CodificadorHTML.headerHTML("Representação da função", nome);
        html += CodificadorHTML.tableDimensoes(dim, true).replace("Eixo ZZ", "Eixo XX");
        html += CodificadorHTML.projeccoesRecta(true, tabela).replace("Projecção no eixo xz", "Função Tabelada");
        html += CodificadorHTML.maxMin(minMax);
        html += CodificadorHTML.zeros(zero);
        html += CodificadorHTML.minMaxLocais(max, "Máximos");
        html += CodificadorHTML.minMaxLocais(min, "Mínimos"); 
        html += CodificadorHTML.fotterHTML();
        htmlFile.format("%s", html);
        htmlFile.close();

Bem, não sabendo qual o objectivo da cadeira não poderei dizer muito sobre o assunto, mas aquilo posso dizer é que essa forma de usar Java é um erro. Eventualmente poderão estar a usar a linguagem para outros fins que não a aprendizagem de Java e de POO, mas mesmo assim seria vantajoso para quem está a aprender, aprender usando algumas das regras correctamente.

infelismente, ainda aprendemos à maneira antiga. inda não há nd de objectos :-(
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Em Paradigmas da Programação(2º semestre) vais introduzir POO, neste momento os conhecimentos dados em Algoritmia e Programação(1º semestre)  são apenas para aprender as técnicas de programação para quem está a começar, sendo o JAVA a linguagem escolhida para esse efeito, todavia ainda não se dá POO nessa cadeira. Há que ter em atenção, que não seria recomendável nem justo(no meu ponto de vista, claro) ensinar POO aos caloiros, principalmente para quem nunca programou.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

(...) Há que ter em atenção, que não seria recomendável nem justo(no meu ponto de vista, claro) ensinar POO aos caloiros, principalmente para quem nunca programou.

O que seria óptimo porque aprenderiam um paradigma sem terem os impedimentos e bloqueios que os outros paradigmas impõe na aprendizagem de POO.

Paradigma orientado a objectos é relativamente simples de se compreender se não existirem os bloqueios de outros paradigmas, a comparação de problemas do dia a dia associados a objectos surge naturalmente.

Pessoalmente, acho um inconveniente estar a habituar os alunos a fazerem coisas mal que depois terão de emendar para programarem correctamente. Existem outras linguagens que poderiam ser usadas e que não teriam estes problemas, Java pode não ser uma linguagem muito complicada mas é uma linguagem com muitas regras, se se está a ensinar a ignorar essas regras, mais tarde é necessário um maior esforço por parte dos alunos para assimilarem as regras e as razões das mesmas.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora