2016-03-18 3 views
0

У меня есть код, который я хочу распечатать весь список классов со студентами в них. Я хочу, чтобы этот список сортировался по class_id, и я хочу иметь пространство между каждым другим классом. например:Вставка пустой строки в Java-выход

100 Math Jon Doe 
100 Math Tina Lee 
100 Math Sally 

122 Science Tom Edison 
122 Science Jon Frankin 

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

Я знаю, что ошибка здесь:

while(!"class_id".equals("class_id")) { 
        System.out.println("\n"); 

       } 

Просто не уверен, что я делаю неправильно.

static void listAllClasses() { 
     System.out.println("\nClasses With Enrollment\n"); 
     try { 
      con = DriverManager.getConnection("jdbc:mysql://localhost:3306/ClassSelector?autoReconnect=true&useSSL=false", "", ""); 
      String totalEnroll = ("SELECT * FROM ClassSelector.student_x_class ORDER BY class_id"); 
      myStmt = con.prepareStatement(totalEnroll); 

      rs = myStmt.executeQuery(totalEnroll); 
      while (rs.next()) { 
       String totalEnrollment = rs.getString("class_id") + "\t" + rs.getString("class_name") + "\t" + rs.getString("student_id") + "\t" + rs.getString("student_name"); 
       while(!"class_id".equals("class_id")) { 
        System.out.println("\n"); 

       } 
       System.out.println(totalEnrollment); 
      } 
     } catch (SQLException e) { 
      e.printStackTrace(); 
     } 
    } 
+0

что вы хотите? –

+5

'" class_id ".equals (" class_id ")' всегда истинно, что бы вы ни делали. – Berger

+1

«Если это яблоко всегда яблоко, сделайте somethign» не имеет смысла ... –

ответ

0

Try:

String lastClass = ""; 
while (rs.next()) { 
     String currentClass = rs.getString("class_id"); 
     String totalEnrollment = rs.getString("class_id") + "\t" + rs.getString("class_name") + "\t" + rs.getString("student_id") + "\t" + rs.getString("student_name"); 
     if(!(currentClass.equals(lastClass) || "",equals(lastClass))) { 
      System.out.println("\n"); 
     } 
     lastClass = currentClass; 
     System.out.println(totalEnrollment); 
0

!"class_id".equals("class_id") никогда не бывает.

То, что вы хотите, может быть, как

 rs = myStmt.executeQuery(totalEnroll); 
     String prevClassID = null; 
     while (rs.next()) { 
      String curClassID = rs.getString("class_id"); 
      String totalEnrollment = curClassID + "\t" + rs.getString("class_name") + "\t" + rs.getString("student_id") + "\t" + rs.getString("student_name"); 
      if (prevClassID != null && !curClassID.equals(prevClassID)) { 
       System.out.print("\n"); 
      } 
      System.out.println(totalEnrollment); 
      prevClassID = curClassID; 
     } 
+0

Удивительно, это прекрасно работает! Не могли бы вы объяснить, что происходит немного? –

+0

Сохраните только что напечатанную «class_id»; для каждого нового элемента, если 'class_id' отличается от ранее сохраненной строки, напечатайте пустую строку. – timrau

+0

круто, спасибо! –

1

Попробуйте это:

static void listAllClasses() { 
     String currentClassId =""; 
     String oldClassId = ""; 
     System.out.println("\nClasses With Enrollment\n"); 
     try { 
      con = DriverManager.getConnection("jdbc:mysql://localhost:3306/ClassSelector?autoReconnect=true&useSSL=false", "", ""); 
      String totalEnroll = ("SELECT * FROM ClassSelector.student_x_class ORDER BY class_id"); 
      myStmt = con.prepareStatement(totalEnroll); 

      rs = myStmt.executeQuery(totalEnroll); 
      while (rs.next()) { 
       currentClassId = rs.getString("class_id"); 
       String totalEnrollment = rs.getString("class_id") + "\t" + rs.getString("class_name") + "\t" + rs.getString("student_id") + "\t" + rs.getString("student_name"); 
       while(currentClassId != null && oldClassId != null && !currentClassId.equals(oldClassId)) { 
        System.out.println("\n"); 

       } 
       oldClassId = currentClassId; 
       System.out.println(totalEnrollment); 
      } 
     } catch (SQLException e) { 
      e.printStackTrace(); 
     } 
    } 
Смежные вопросы