Как распечатать вывод только после ввода всех входных данных, вместо того, чтобы печатать его построчно? - PullRequest
0 голосов
/ 06 марта 2019

У меня есть класс Employee:

public class Employee{
  private String firstName;
  private String lastName;
  private double salary;
  private double rate;

  public Employee(String firstName, String lastName, double salary){
    this.firstName = firstName;
    this.lastName = lastName;
    this.salary = salary;
  }

  public String getFirstName(){
    return firstName;
  }

  public String getLastName(){
    return lastName;
  }

  public double getSalary(){
    return salary/1000;
  }

  public double setSalaryIncrease(double rate){
    if ((rate-1)*100>=0){
      this.rate = ((rate-1)*100);
      return this.rate;
    }
    else{
      this.rate = -((rate-1)*100);
      return this.rate;
    }
  }

  public String toString(){
    return firstName+" "+lastName+": salary is "+String.format("%.0f", salary/1000)+"K, annual raise is "+String.format("%.0f", rate)+"%";
  }
}

, а в моем основном классе

public class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);

    while (sc.hasNext()) {
      Employee employee = new Employee(sc.next(), sc.next(), sc.nextDouble());
      employee.setSalaryIncrease(sc.nextDouble());
      System.out.println(employee);
    }
  }
}

Например, если у меня есть список входных данных, например

Mohammad Ali 24000.0 1.11
Steve Gates 36000.0 1.05
Michael Jordan 71000.0 1.07

Я хочу, чтобы он печатался только после того, как все 3 входа были отсканированы.Тем не менее, я заканчиваю тем, что печатаю каждую строку после того, как каждая строка отсканирована, то есть

  • Мохаммед Али 24000.0 1.11

    Мохаммед Али: зарплата составляет 24 тыс., Годовой рост составляет11%

  • Стив Гейтс 36000,0 1,05

    Стив Гейтс: оклад 36K, годовой прирост 5%

Как мне изменить метод toString (), чтобы он выводил всю информацию целиком после чтения всех входных данных, не внося изменений в мой основной класс?

1 Ответ

0 голосов
/ 06 марта 2019

System.out.println ();печатает каждую строку в новой строке

, попробуйте System.out.print ("string") и после цикла while вы можете использовать System.out.println ("") для перехода на новую строку

...