Implementar Formula

11 respostas
D

Boa tarde galera!!!
Sou novo por aki… entao preciso de uma ajuda!!
Preciso implementar uma formula euclidiana para saber a distancia entre vetores… ja add pelo java(SERVLET) os valores no BD MySQL… soh q num consigo buscar esses valores para dentro de uma classe para daee então aplicar a formula euclidiana.
depois que os valores q foram incluidos no BD em forma de vetor(valr1,valr2,valr3,valr4,valr5), preciso comparar valores atuais com os do BD… axo q precisa fazer ulguns FOR para percorrer esses vetores… heheh alguem me entendeu??

mas primeiramente preciso buscar esses vetores no BD… como faço??

obrigado!!!

11 Respostas

BrunoBastosPJ

Select! hehehe

Depende, como você ta gravando esses valores? É com código java? Se for você já tem uma conexão! Você está usando jdbc? Se for faz uma query, tras esses valores e joga em um objeto…

D
Sim eu gravo com codigo JAVA.. eh com driver jdbc sim!! soh q da erro.. pelo jeito eh erro de abre e fech"{}" hehehe o q axa desse codigo?
public void doGet(HttpServletRequest req, HttpServletResponse res)
    throws ServletException, IOException {
        erro = !carregaBd();
        res.setContentType("text/html");
        PrintWriter out= res.getWriter();
        if (erro) {
            out.println(mensagem(msgErro));
            return;
        }
        out.println("<html>");
        out.println("<head>");
        out.println("<title>Knn</title>");
        out.println("</head>");
        out.println("<form action='http://localhost:8084/ProgKNN/BuscaValores'method='post' name='form1'>");
        out.println("<table border='0'>");
        out.println("<tr>");
        out.println("<td width='100%' align='left'>Buscando Valores Knn</td>");
        out.println("</tr>");
        out.println("<tr>");
        out.println("<td width='100%' align='left'");
        out.println("<hr>");
        out.println("</td>");
        out.println("</tr>");
        out.println("</table>");
        out.println("<table border='0'>");
        
        try {
            sql = "select valor1 from teste_knn;";
            statement = con.prepareStatement(sql);
            resultado = statement.executeQuery();
            
            while (resultado.next()) {
                String nome = resultado.getString("valor1");
                out.println("<tr>");
                out.println("<td>"+valor1+"</td>");
                
                out.println("</td>");
                out.println("</tr>");
            }
            resultado.close();
            statement.close();
            
        } catch (SQLException e) {
            out.println(mensagem("Erro SQL: "+e.toString()));
        }
        out.println("</table>");
        out.println("</form>");
        out.println("</body>");out.println("</html>");
        
        
        
        try { con.close(); } catch (Exception e) {}
    }

a intensão eh ao menos conseguir trazer os valores da coluna "valor1" do BD

esse codigo ja eh o da busca de valores!!

D

tavez fique mais facil compreender o erro com o codigo completo neh!!
Ahh… o erro eh de sintaxe nas linhas abaixo do 1º try.

import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
public class BuscaValores extends HttpServlet {
    boolean erro = false;
    Connection con;
    String msgErro = new String();
// dados da pagina
    String valor1, valor2, valor3, valor4, valor5;
    public void doGet(HttpServletRequest req, HttpServletResponse res)
    throws ServletException, IOException {
        erro = !carregaBd();
        res.setContentType("text/html");
        PrintWriter out= res.getWriter();
        if (erro) {
            out.println(mensagem(msgErro));
            return;
        }
        out.println("<html>");
        out.println("<head>");
        out.println("<title>Knn</title>");
        out.println("</head>");
        out.println("<form action='http://localhost:8084/ProgKNN/BuscaValores'method='post' name='form1'>");
        out.println("<table border='0'>");
        out.println("<tr>");
        out.println("<td width='100%' align='left'>Buscando Valores Knn</td>");
        out.println("</tr>");
        out.println("<tr>");
        out.println("<td width='100%' align='left'");
        out.println("<hr>");
        out.println("</td>");
        out.println("</tr>");
        out.println("</table>");
        out.println("<table border='0'>");
        
        try {
            sql = "select valor1 from teste_knn;";
            statement = con.prepareStatement(sql);
            resultado = statement.executeQuery();
            
            while (resultado.next()) {
                String nome = resultado.getString("valor1");
                out.println("<tr>");
                out.println("<td>"+valor1+"</td>");
                
                out.println("</td>");
                out.println("</tr>");
            }
            resultado.close();
            statement.close();
            
        } catch (SQLException e) {
            out.println(mensagem("Erro SQL: "+e.toString()));
        }
        out.println("</table>");
        out.println("</form>");
        out.println("</body>");out.println("</html>");
          
        try { con.close(); } catch (Exception e) {}
    }
    private String mensagem(String msg) {
        String paginaMensagem = new String();
        paginaMensagem = "<html><head><title>Mensagem</title></head>";
        paginaMensagem += "<body><h2>"+msg+"</h2></body></html>";
        return paginaMensagem;
    }
    private boolean carregaBd() {
// Carrega driver
        try {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
        } catch (Exception e) {
            msgErro = "Erro ao carregar driver Banco Dados "+e.toString();
            return false;
        }
// Cria conexao com BD
        try {
            con = DriverManager.getConnection("jdbc:mysql://localhost:3306/euclidiana", "root", "diones");
        } catch (Exception e) {
            msgErro = "Erro ao conectar ao Banco de dados"+e.toString();
            return false;
        }
        return true;
    }
}
BrunoBastosPJ

você não declarou que a variável sql era uma String. Você não declarou que a variável statement era um Statement e o mesmo com o resultset. Mudei o método que criar o Statement. Da uma olhada ai e testa!

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;

public class BuscaValores extends HttpServlet {
    boolean erro = false;
    Connection con;
    String msgErro = new String();
// dados da pagina
    String valor1, valor2, valor3, valor4, valor5;
    public void doGet(HttpServletRequest req, HttpServletResponse res)
    throws ServletException, IOException {
        erro = !carregaBd();
        res.setContentType("text/html");
        PrintWriter out= res.getWriter();
        if (erro) {
            out.println(mensagem(msgErro));
            return;
        }
        out.println("<html>");
        out.println("<head>");
        out.println("<title>Knn</title>");
        out.println("</head>");
        out.println("<form action='http://localhost:8084/ProgKNN/BuscaValores'method='post' name='form1'>");
        out.println("<table border='0'>");
        out.println("<tr>");
        out.println("<td width='100%' align='left'>Buscando Valores Knn</td>");
        out.println("</tr>");
        out.println("<tr>");
        out.println("<td width='100%' align='left'");
        out.println("<hr>");
        out.println("</td>");
        out.println("</tr>");
        out.println("</table>");
        out.println("<table border='0'>");
       
        try {
            String sql = "select valor1 from teste_knn;";
            Statement statement = con.createStatement();
            ResultSet resultado = statement.executeQuery(sql);
           
            while (resultado.next()) {
                String nome = resultado.getString("valor1");
                out.println("<tr>");
                out.println("<td>"+valor1+"</td>");
               
                out.println("</td>");
                out.println("</tr>");
            }
            resultado.close();
            statement.close();
           
        } catch (SQLException e) {
            out.println(mensagem("Erro SQL: "+e.toString()));
        }
        out.println("</table>");
        out.println("</form>");
        out.println("</body>");out.println("</html>");
         
        try { con.close(); } catch (Exception e) {}
    }
    private String mensagem(String msg) {
        String paginaMensagem = new String();
        paginaMensagem = "<html><head><title>Mensagem</title></head>";
        paginaMensagem += "<body><h2>"+msg+"</h2></body></html>";
        return paginaMensagem;
    }
    private boolean carregaBd() {
// Carrega driver
        try {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
        } catch (Exception e) {
            msgErro = "Erro ao carregar driver Banco Dados "+e.toString();
            return false;
        }
// Cria conexao com BD
        try {
            con = DriverManager.getConnection("jdbc:mysql://localhost:3306/euclidiana", "root", "diones");
        } catch (Exception e) {
            msgErro = "Erro ao conectar ao Banco de dados"+e.toString();
            return false;
        }
        return true;
    }
}
D

isso!!! executou soh q resultou em valores nulos… tpw… no BD tenho 7 valores cadastrados, ele retorna 7 linhas com “null” em cada uma delas… sera q nao reconhece os numeros do BD…??

valeu Brunoo!!

BrunoBastosPJ

Tenta pegar pelo indice, só pra testar

String nome = resultado.getString(1);

Obs: Supondo que o 2nd campo do seu BD, seja um varchar

D

pois eh… pior q meus atributos estao declarados como “float” pois vou trabalhar com peso… entao podera existir valores quebrados…
mais consegui buscalos e mostrar na tela, alterando de:

String nome= resultado.getString("valor1");

para:

String valor1 = resultado.getString("valor1");

tendeu… num sei mais vc tinha declarado como string o nome e entao mudei para valor1… certo??

agora quero ver c consigo buscar mais valores e implementar a formula(duvido q consigo sozinho)… hehehe

mais valeu!!! obrigado!!

BrunoBastosPJ

Se estão declarados como float use

float valor1 = resultset.getFloat("valor1");
D

por incrivel q pareca… num consigo ler uns valores digitados no teclado… valores do tipo flutuante!!.. preciso ler essa sequencia de valores para daee comparar com os valores q consegui ler do BD… olhem… consegui monta a tela… mais num consigo armazenar esses numeros em variaveis…

public void doPost(HttpServletRequest req, HttpServletResponse res)
    throws ServletException, IOException {
        
        //PreparedStatement statement;
        //ResultSet resultado = null;
        //String sql;
        
        String n1 =String.valueOf(num1);
        String n2 =String.valueOf(num2);
        String n3 =String.valueOf(num3);
        String n4 =String.valueOf(num4);
        String n5 =String.valueOf(num5);
        n1 = req.getParameter("num1");
        n2= req.getParameter("num2");
        n3 = req.getParameter("num3");
        n4 = req.getParameter("num4");
        n5 = req.getParameter("num5");
       
       
        res.setContentType("text/html");
        PrintWriter out= res.getWriter();
        if (erro) {
            out.println(mensagem(msgErro));
            return;
        }
         out.println("<form action='http://localhost:8084/ProgKNN/BuscaValores'method='post' name='form1'>");
        out.println("<table border='0'>");
        out.println("<tr>");
        out.println("<td width='100%' align='left'>Buscando Valores Knn</td>");
        out.println("</tr>");
        out.println("<tr>");
        out.println("<td width='100%' align='left'");
        out.println("<hr>");
        out.println("</td>");
        out.println("</tr>");
        out.println("</table>");
        out.println("<table border='0'>");
        
       try{ 
        String sql = "select * from teste_knn where cod_teste =3;";
            Statement statement = con.createStatement();
            ResultSet resultado = statement.executeQuery(sql);
         
            while (resultado.next()) {
                cod_teste = resultado.getFloat("cod_teste");
                valor1 = resultado.getFloat("valor1");
                valor2 = resultado.getFloat("valor2");
                valor3 = resultado.getFloat("valor3");
                valor4 = resultado.getFloat("valor4");
                valor5 = resultado.getFloat("valor5");
                out.println("<tr>");
                out.println("<td>vetor avaliado:"+cod_teste+"</td>");
                out.println("</tr>");
                out.println("<tr>");
                out.println("<td>Valores: "+valor1+" ; "+valor2+" ; "+valor3+" ; "+valor4+" ; "+valor5+"</td>");
                //soma= valor1;
                //somatotal =  soma + somatotal ;
                somatotal =  valor1+valor2+valor3+valor4+valor5 ;
                out.println("</td>");
                out.println("</tr>");
         
            }
         
            // potencia de um x usando cosseno
            float x1 = (float) (Math.pow((valor1),2)) ;
            float x2 = (float) (Math.pow((valor2),2)) ;
            float x3 = (float) (Math.pow((valor3),2)) ;
            float x4 = (float) (Math.pow((valor4),2)) ;
            float x5 = (float) (Math.pow((valor5),2)) ;
            //potencia de y
            float y1 = (float)(Math.pow(num1,2));
            float y2 = (float) (Math.pow(num2,2));
            float y3 = (float) (Math.pow(num3,2));
            float y4 = (float) (Math.pow(num4,2));
            float y5 = (float) (Math.pow(num5,2));
            //somatorias
            //calculo do numerador
            float E1 = (float) ((valor1*2)+(valor2*2)+(valor3*2)+(valor4*2)+(valor5*2));
            float E2 = (float) (x1+x2+x3+x4+x5);
            float E3 = (float) (y1+y2+y3+y4+y5);
            //calculo final do denominador
            float denominador = (float) (E2*E3);
            //calculo final da divisão do cosseno
            float cos = (float) (E1/denominador);
         
            //mostra resultados das potencias
            out.println("<tr>");
            out.println("<td>Resultado do numerador: "+E1+"</td>");
            out.println("</td>");
         
         
            out.println("<tr>");
            out.println("<td>Resultado do denominador: "+denominador+"</td>");
            out.println("</td>");
            out.println("</tr>");
         
            out.println("<tr>");
            out.println("<td>Resultado da formula cossenoidal em  (cod_teste1)  é: "+cos+"</td>");
            out.println("</td>");
            out.println("</tr>");
         
            resultado.close();
            statement.close();
        }catch (SQLException e) {
        out.println(mensagem("Erro SQL: "+e.toString()));
        }
       
           
        
       
 }
D

tentei melhorar um pouco esse codigo… mais a principio da um erro d incompatibilidade eu acho… olhem o erro:

<blockquote>java.lang.NumberFormatException: For input string: “num1”

sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1224)

java.lang.Float.parseFloat(Float.java:394)

BuscaValores.doPost(BuscaValores.java:131)

javax.servlet.http.HttpServlet.service(HttpServlet.java:709)

javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)</blockquote>

e o codigo esta assim… soh q nem sei se eh no doPost q se faz esse armazenamento em variavel…
public void doPost(HttpServletRequest req, HttpServletResponse res)
    throws ServletException, IOException {  
        erro = !carregaBd();
        res.setContentType("text/html");
        PrintWriter out= res.getWriter();
        if (erro) {
            out.println(mensagem(msgErro));
            return;
        } 
        float n1 = Float.parseFloat("num1");
        float n2 = Float.parseFloat("num2");
        float n3 = Float.parseFloat("num3");
        float n4 = Float.parseFloat("num4");
        float n5 = Float.parseFloat("num5");
        
        try{
            String sql = "select * from teste_knn where cod_teste =3;";
            Statement statement = con.createStatement();
            ResultSet resultado = statement.executeQuery(sql);
            
            while (resultado.next()) {
                cod_teste = resultado.getFloat("cod_teste");
                valor1 = resultado.getFloat("valor1");
                valor2 = resultado.getFloat("valor2");
                valor3 = resultado.getFloat("valor3");
                valor4 = resultado.getFloat("valor4");
                valor5 = resultado.getFloat("valor5");
            }
            // potencia de um x usando cosseno
            float x1 = (float) (Math.pow((valor1),2)) ;
            float x2 = (float) (Math.pow((valor2),2)) ;
            float x3 = (float) (Math.pow((valor3),2)) ;
            float x4 = (float) (Math.pow((valor4),2)) ;
            float x5 = (float) (Math.pow((valor5),2)) ;
            //potencia de y
            float y1 = (float)(Math.pow(n1,2));
            float y2 = (float) (Math.pow(n2,2));
            float y3 = (float) (Math.pow(n3,2));
            float y4 = (float) (Math.pow(n4,2));
            float y5 = (float) (Math.pow(n5,2));
            //somatorias
            //calculo do numerador
            float E1 = (float) ((valor1*n1)+(valor2*n2)+(valor3*n3)+(valor4*n4)+(valor5*n5));
            float E2 = (float) (x1+x2+x3+x4+x5);
            float E3 = (float) (y1+y2+y3+y4+y5);
            //calculo final do denominador
            float denominador = (float) (E2*E3);
            //calculo final da divisão do cosseno
            float cos = (float) (E1/denominador);
            //mostra resultados das potencias  
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Knn</title>");
            out.println("</head>");
            out.println("<form action='http://localhost:8084/ProgKNN/BuscaValores'method='post' name='form1'>");
            out.println("<table border='0'>");
            out.println("<tr>");
            out.println("<td width='100%' align='left'>Buscando Valores Knn</td>");
            out.println("</tr>");
            out.println("<tr>");
            out.println("<td width='100%' align='left'");
            out.println("<hr>");
            out.println("</td>");
            out.println("</tr>");
            out.println("</table>");
            out.println("<table border='0'>");
            
            out.println("<tr>");
            out.println("<td>Resultado do vetor digitado: "+n1+"  "+n2+"  "+n3+"  "+n4+"  "+n5+"</td>");
            out.println("</td>");
            
            //fim cabecalho
            out.println("<tr>");
            out.println("<td>Resultado do numerador: "+E1+"</td>");
            out.println("</td>");
             
            out.println("<tr>");
            out.println("<td>Resultado do denominador: "+denominador+"</td>");
            out.println("</td>");
            out.println("</tr>");
            
            out.println("<tr>");
            out.println("<td>Resultado da formula cossenoidal em  (cod_teste1)  é: "+cos+"</td>");
            out.println("</td>");
            out.println("</tr>");
            
            
            out.println("</table>");
            out.println("</body>");
            out.println("</html>");
            resultado.close();
            statement.close();
            
        }catch (SQLException e) {
            out.println(mensagem("Erro SQL: "+e.toString()));
        }
        
        
        
        
    }

Obrigado!!

D

Estou com duvidas a respeito de como fazer uma consulta sql, num BD MySQL …ou seja, quero aliar uma sql a uma variavel chamada cod a minha consuta sql. Nao consigo atribuir essa variavel na condicao proposta:

String sql_cod = "select cod_teste from teste_knn "; Statement statemente = con.createStatement(); ResultSet cod = statemente.executeQuery(sql_cod); while(cod.next()){ out.println(cod.getString("cod_teste") + "<br>");

Preciso que cod_teste receba variavel cod

String sql = "select * from teste_knn where cod_teste LIKE '%"+cod+"%'";
Criado 1 de março de 2007
Ultima resposta 10 de mar. de 2007
Respostas 11
Participantes 2