2015-08-04 2 views
-2

Я написал функцию, которая используется для выбора наивысшего значения и отображения всех элементов из sql на основе идентификатора. Если aa [0] является самым высоким, он отображает все в ID 0, если нет, то будет отображаться либо 1, либо 2. Но теперь проблема заключается только в отображении значения в ID 0, хотя ID 1 является самым высоким! Кто-нибудь может помочь мне разобраться, что случилось с моим кодированием? Благодаряdisplay наибольшее значение

private void pick_highest_value_here_and_display(ArrayList<Double> value) throws Exception { 
       // TODO Auto-generated method stub 
       double aa[]=value.stream().mapToDouble(v -> v.doubleValue()).toArray(); 
       double highest=aa[0]; 
       if(highest==aa[0]) 
       { 
        String sql ="Select * from placeseen where ID =0"; 
        DatabaseConnection db = new DatabaseConnection(); 
        Connection conn =db.getConnection(); 
        PreparedStatement ps = conn.prepareStatement(sql); 
        ResultSet rs = ps.executeQuery(); 
        if (rs.next()) 
        { 
         String aaa=rs.getString("place1"); 
         String bbb=rs.getString("place2"); 
         String cc=rs.getString("place3"); 
         Tourism to =new Tourism(); 
         to.setPlace1(aaa); 
         to.setPlace2(bbb); 
         to.setPlace3(cc); 
         DispDay dc=new DispDay(); 
         dc.setVisible(true); 
        } 
        ps.close(); 
        rs.close(); 
        conn.close(); 
      } else 
      { 
        for(int i=0;i<aa.length;i++) 
       { 
        if(aa[i]>highest) 
        { 
         highest=aa[i]; 
         System.out.println(highest); 
         String sql ="Select * from placeseen where ID =?"; 
         DatabaseConnection db = new DatabaseConnection(); 
         Connection conn =db.getConnection(); 
         PreparedStatement ps = conn.prepareStatement(sql); 
         ps.setDouble(1, i); 
         ResultSet rs = ps.executeQuery(); 
         if (rs.next()) 
         { 
          String aaa=rs.getString("place1"); 
          String bbb=rs.getString("place2"); 
          String cc=rs.getString("place3"); 
          Tourism to =new Tourism(); 
          to.setPlace1(aaa); 
          to.setPlace2(bbb); 
          to.setPlace3(cc); 
          DispDay dc=new DispDay(); 
          dc.setVisible(true); 
         } 
         ps.close(); 
         rs.close(); 
         conn.close(); 
       } 

       } 

      } 
+3

Проблема с функцией не имеет ничего общего с SQL. Проблема с вашей логикой заключается в том, что вы выполняете работу в java, а не в базе данных, где она будет намного более эффективной. –

+5

Я согласен с Гордоном, но вы устанавливаете максимум на aa [0], а затем проверяете, будет ли высокий = aa [0], который всегда будет истинным, поэтому никогда не попадайте в другое. – Maxqueue

+1

«Получите эту штуку. Хорошо, теперь самое высокое, что я нашел, это то, что есть. Если эта вещь самая высокая, сделайте это ... еще, зациклируйте какой-нибудь материал» – CubeJockey

ответ

0
private void pick_highest_value_here_and_display(ArrayList<Double> value) throws Exception { 
      // TODO Auto-generated method stub 
      double aa[]=value.stream().mapToDouble(v -> v.doubleValue()).toArray(); 
      double highest=aa[0]; 
       for(int i=1;i<aa.length;i++) 
      { 
       if(aa[i]>highest) 
       { 
        highest=aa[i]; 
        System.out.println(highest); 
        String sql ="Select * from placeseen where ID =?"; 
        DatabaseConnection db = new DatabaseConnection(); 
        Connection conn =db.getConnection(); 
        PreparedStatement ps = conn.prepareStatement(sql); 
        ps.setDouble(1, i); 
        ResultSet rs = ps.executeQuery(); 
        if (rs.next()) 
        { 
         String aaa=rs.getString("place1"); 
         String bbb=rs.getString("place2"); 
         String cc=rs.getString("place3"); 
         Tourism to =new Tourism(); 
         to.setPlace1(aaa); 
         to.setPlace2(bbb); 
         to.setPlace3(cc); 
         DispDay dc=new DispDay(); 
         dc.setVisible(true); 
        } 
        ps.close(); 
        rs.close(); 
        conn.close(); 
      } 
       else if(highest==aa[0]) 
       { 
        String sql ="Select * from placeseen where ID =0"; 
        DatabaseConnection db = new DatabaseConnection(); 
        Connection conn =db.getConnection(); 
        PreparedStatement ps = conn.prepareStatement(sql); 

        ResultSet rs = ps.executeQuery(); 
        if (rs.next()) 
        { 
         String aaa=rs.getString("place1"); 
         String bbb=rs.getString("place2"); 
         String cc=rs.getString("place3"); 
         Tourism to =new Tourism(); 
         to.setPlace1(aaa); 
         to.setPlace2(bbb); 
         to.setPlace3(cc); 
         DispDay dc=new DispDay(); 
         dc.setVisible(true); 
        } 
        ps.close(); 
        rs.close(); 
        conn.close(); 
       } 


     } 


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