title: java.util.IllegalFormatConversionException: d != java.lang.String
body: <p>I have problem when print output list of people by using ArrayList</p>
  
  <pre><code>package data;
  
  import java.util.ArrayList;
  import java.util.Collections;
  import java.util.Comparator;
  import java.util.List;
  import java.util.Scanner;
  
  public class Manager {
  List&lt;Person&gt; p = new ArrayList();
  Scanner sc = new Scanner(System.in);
  
  public void addStudent() {
      String id;
      String name;
      int yob;
      double point1;
      double point2;
      System.out.println("Input student id:");
      id = sc.nextLine();
      System.out.println("Input student name:");
      name = sc.nextLine();
      System.out.println("Input yob:");
      yob = Integer.parseInt(sc.nextLine());
      System.out.println("Input point 1:");
      point1 = Double.parseDouble(sc.nextLine());
      System.out.println("Input point 2:");
      point2 = Double.parseDouble(sc.nextLine());
      p.add(new Student(id,name,yob,point1,point2));
  }
  public void addEmployee() {
      String id;
      String name;
      int yob;
      double salaryRatio;
      double salary;
      System.out.println("Input employee id:");
      id = sc.nextLine();
      System.out.println("Input employee name:");
      name = sc.nextLine();
      System.out.println("Input employee yob:");
      yob = Integer.parseInt(sc.nextLine());
      System.out.println("Input salary ratio:");
      salaryRatio = Double.parseDouble(sc.nextLine());
      System.out.println("Input salary:");
      salary = Double.parseDouble(sc.nextLine());
      p.add(new Employee(id, name, yob,salaryRatio, salary));
  }
  public void addCustomer() {
      String id;
      String name;
      int yob;
      String companyName;
      double bill;
      System.out.println("Input customer id:");
      id = sc.nextLine();
      System.out.println("Input customer name:");
      name = sc.nextLine();
      System.out.println("Input customer yob:");
      yob = Integer.parseInt(sc.nextLine());
      System.out.println("Input compnay name:");
      companyName = sc.nextLine();
      System.out.println("Input bill:");
      bill = Double.parseDouble(sc.nextLine());
      p.add(new Customer(id,name,yob,companyName,bill));
  }
  public void addWho() {
      int choice;
      do {
      System.out.println("1.Add Student");
      System.out.println("2.Add Employee");
      System.out.println("3.Add Customer");
      System.out.println("4.Back to menu");
      System.out.println("==============");
      System.out.println("Choice:");
      choice = Integer.parseInt(sc.nextLine());
      switch(choice) {
          case 1:
              addStudent();
              break;
          case 2:
              addEmployee();
              break;
          case 3:
              addCustomer();
              break;
          case 4:
              break;
      }
      }
      while(choice != 4);
  }
  public void printPersonById() {
      Collections.sort(p, Comparator.comparing(Person::getId));
      for (int i = 0; i &lt; p.size(); i++) {
          System.out.println(p.get(i));
      }
  }
  </code></pre>
  
  <p>Student,Employee, and Customer are sub classes of class Person.When I <strong>try to</strong> <strong>print list</strong>,it has an error:
  Exception in thread "main" java.util.IllegalFormatConversionException: d != java.lang.String</p>
  
  <p>How can I fix it?</p>