2015-11-04 3 views
0
package canlitahmin; 

    import java.sql.*; 
    import java.util.ArrayList; 
    import java.util.List; 

    public class baglanti { 
     // JDBC driver name and database URL 
     static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; 
     static final String DB_URL = "jdbc:mysql://localhost:3306/canlitahmin"; 

     // Database credentials 
     static final String USER = "root"; 
     static final String PASS = ""; 
     public static List<Integer> id = new ArrayList<Integer>(); 
     public static List<Integer> evgol = new ArrayList<Integer>(); 
     public static List<Integer> kuralid = new ArrayList<Integer>(); 
     public static List<String> kural = new ArrayList<String>(); 
     public static List<Integer> depgol = new ArrayList<Integer>(); 
     public static List<Integer> dakika = new ArrayList<Integer>(); 

     public static void main(String[] args) { 


     Connection conn = null; 
     Statement stmt = null; 
     Statement stmt2 = null; 
     try{ 
      //STEP 2: Register JDBC driver 
      Class.forName("com.mysql.jdbc.Driver"); 

      //STEP 3: Open a connection 
      System.out.println("Connecting to database..."); 
      conn = DriverManager.getConnection(DB_URL,USER,PASS); 

      //STEP 4: Execute a query 
      System.out.println("Creating statement..."); 
      stmt = conn.createStatement(); 
      stmt2 = conn.createStatement(); 
      String sql; 
      String sql2; 
      sql = "SELECT id, evgol, depgol, dk FROM maclar"; 
      sql2="SELECT id,kural from kurallar"; 
      ResultSet rs = stmt.executeQuery(sql); 
      ResultSet rs2 = stmt2.executeQuery(sql2); 
      int i=0; 
      //STEP 5: Extract data from result set 
      while(rs.next()){ 
      //Retrieve by column name 
      id.add(rs.getInt("id")); 
      evgol.add(rs.getInt("evgol")); 
      depgol.add(rs.getInt("depgol")); 
      dakika.add(rs.getInt("dk")); 

      //Display values 
      System.out.print("ID: " + id.get(i)); 
      System.out.print(", Evgol: " + evgol.get(i)); 
      System.out.print(", Depgol: " + depgol.get(i)); 
      System.out.println(", dakika: " + dakika.get(i)); 
      i++; 
      } 
      int k=0; 
      while(rs2.next()){ 
       //Retrieve by column name 
       kuralid.add(rs2.getInt("id")); 
       kural.add(rs2.getString("kural")); 

       //Display values 
       System.out.print("KURALID: " + kuralid.get(k)); 
       System.out.println(", KURAL: " + kural.get(k)); 
       k++; 
      } 

      for(int l=0;l<id.size();l++){ 
       int BYTG=evgol.get(l); 
      int DEPTG=depgol.get(l); 

      /* int DK=dakika.get(l); 
      int MACKODLARI=id.get(l);*/ 

      for(int j=0;j<kuralid.size();j++){ 

      ###if(kural.get(j))###{ // ERROR********************************** 
       double a=BYTG+DEPTG+0.5; 
       int b=BYTG+DEPTG; 
       String kural="Tahmin:"+a+" üstü ve "+b+" üstü"; 
       System.out.println(kural); 
      }} 
      } 
      //STEP 6: Clean-up environment 
      rs.close(); 
      rs2.close(); 
      stmt.close(); 
      stmt2.close(); 
      conn.close(); 
     }catch(SQLException se){ 
      //Handle errors for JDBC 
      se.printStackTrace(); 
     }catch(Exception e){ 
      //Handle errors for Class.forName 
      e.printStackTrace(); 
     }finally{ 
      //finally block used to close resources 
      try{ 
      if(stmt!=null) 
       stmt.close(); 
      }catch(SQLException se2){ 
      }// nothing we can do 
      try{ 
      if(conn!=null) 
       conn.close(); 
      }catch(SQLException se){ 
      se.printStackTrace(); 
      }//end finally try 
     }//end try 
     System.out.println("Goodbye!"); 
    }//end main 
    }//end FirstExample 

описание товара java if инструкция строка сравнение. мои данные базы данных попадают в «kural.get (j)» , но ошибка kural.get (j). потому что его строковая переменная. Вопрос: Строка a = b> 0 & & c> 0 - если (a) как я использую? Строка кода в случае с переменнойjava if инструкция строка сравнение

+3

Вы не можете динамически выполнять такой код. Это не то, что вы можете сделать на Java. –

+2

Что вы пытаетесь достичь с помощью этого подхода? Я подозреваю, что вы пытаетесь решить проблему или установить эффективность кодирования, которая достижима с помощью какого-либо другого общего метода или шаблона. – lurker

+0

Вы можете так сказать с JavaScript: двигатель Nashorn работает в JVM. Передайте функцию JavaScript и оцените ее. – duffymo

ответ

1

Это может быть сделано программно с JavaCompiler и javax.tools package

В качестве связанного с этим вопроса см How do I programmatically compile and instantiate a Java class?

Решение одно и то же.

+1

Как примечание стороны, см. комментарий lurker по вашему вопросу. Хотя я думаю, что это ответ на ваш ** вопрос **, в зависимости от того, чего вы пытаетесь достичь, может быть не ответом на вашу ** проблему ** – Hbas

+0

Вы не можете получить контекст из окружающей программы, хотя - вы не можете ожидать, что i и j действительно войдут во встроенную программу. –

+0

Да ... Но даже если вы не можете «получить» контекст, вы можете «дать» контекст скомпилированным экземплярам с чем-то вроде методов «setJ» и «setI». Я просто надеюсь, что его код - всего лишь пример, чтобы спросить, как оценивать строки, а не его фактическое использование. – Hbas

1

Вы не можете легко сделать это с помощью String s. Что вы можете сделать, это сделать интерфейс как этот

interface IntIntPredicate { 
    public boolean test(int i, int j); 
} 

Затем вы можете сделать (в Java 8):

IntIntPredicate a = (i, j) -> i == 1 && j <= 2; 
IntIntPredicate b = (i, j) -> i <= 0 && j == 2; 

Позже вы можете сделать:

if (a.test(i, j)) { 
    // do something 
} else if (b.test(i, j)) { 
    // do something else 
} 

Это возможно в более ранних версиях Java, но синтаксис более неуклюжий.

Если необходимо, чтобы данные были введены в качестве String, это, вероятно, не будет слишком трудно написать метод для разбора String (лечения i и j в качестве первого и второго аргументов) и возвращать IntIntPredicate

public static IntIntPredicate parse(String x) { 
    // This is going to require a lot of work, but 
    // there are many questions on this site about how 
    // to parse expressions such as "(2 + 3) * 9" 
} 
0

Вы могли бы сделать метод, как:

boolean predicate(i,j) { 
    if (i==1 and j <=2) { 
     return true; 
    } 
    return false; 
} 

И затем вызвать метод как это:

if (predicate(i,j)) { 
    System.out.println("a"); 
} 
0

Вы также можете использовать ScriptEngine, но вам нужно перевести логику на язык сценариев, такой как Javascript.

import javax.script.ScriptEngineManager; 
import javax.script.ScriptEngine; 
import javax.script.ScriptException; 

/** 
* 
* @author afshin 
*/ 
public class Blah { 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) throws ScriptException { 

     ScriptEngineManager mgr = new ScriptEngineManager(); 
     ScriptEngine engine = mgr.getEngineByName("JavaScript"); 
     int i = 1; 
     int j = 1; 
     String a = i + "==1 && " + j +"<=2"; 
     String b= i + "<=0 && " + j+"==2"; 

     if (((Boolean) engine.eval(a))) 
      System.out.println("a is true"); 
     if (((Boolean) engine.eval(b))) 
      System.out.println("b is true"); 

    } 

} 
Смежные вопросы