Создание метода с именемcalcWinPercentage (). мы должны убедиться, что не делим на 0. Если игр не было, верните -1 - PullRequest
0 голосов
/ 01 августа 2020

Измените displayPlayer (), чтобы также отображать процент выигрыша. Поскольку процент выигрыша - это расчетное значение, оно не сохраняется в объекте (и нет данных поле). Вместо отображения поля будет вызван метод calcWinPercentage (). Значение, возвращаемое методом, будет умножено на 100 для целочисленной формы. Отобразите это значение с точностью до одного di git после десятичной точки. Чтобы отобразить знак процента с printf используйте %%. Если ни одна игра не была сыграна, из calcWinPercentage, и вы должны отобразить «Нет игр» для процента выигрыша.

Я начинающий уровень java. Не уверен, почему я получаю ошибку NAN или -100 в процентах.

public class TestTennisPlayer2
{
  public static void main(String[] args)
  {
    ShresthaTennisPlayer tp1 = new  ShresthaTennisPlayer();
    ShresthaTennisPlayer tp2 = new  ShresthaTennisPlayer("Serena", "Williams", "USA");
    ShresthaTennisPlayer tp3 = new  ShresthaTennisPlayer("Simona", "Halep", "Romania", 4, 27);
    ShresthaTennisPlayer tp4 = new  ShresthaTennisPlayer("Sloane", "Stephens", "USA", 8, 26, 18, 11);
    
    tp1.displayPlayer();
    tp2.displayPlayer();
    tp3.displayPlayer();
    tp4.displayPlayer();
    
    
   
    
  }
}
public class ShresthaTennisPlayer
{
  private String firstName;
  private String lastName;
  
  private String country;
  
  private int rank;
  private int age;
  
  private int wins;
  private int losses;
  
  double winningPercentage;
  double totalGames;
  
  double winPercentage = calcWinPercentage();
  
  public ShresthaTennisPlayer()
  { 
      firstName = null;
      lastName = null;
      country = null;
      
      rank = 0;
      age = 0;
      wins = 0;
      losses = 0; 
  }
  
  public ShresthaTennisPlayer(String FName, String LName, String CountryName)
  {
  firstName = FName;
  lastName = LName;
  country = CountryName;
  
  rank = 0;
  age = 0;
  wins = 0;
  losses = 0;
  }
  
  
  public ShresthaTennisPlayer(String FName, String LName, String CountryName, int r, int a)
  {
  firstName = FName;
  lastName = LName;
  country = CountryName;
  
  rank = r;
  age = a;
  wins = 0;
  losses = 0;
  }
  
  public ShresthaTennisPlayer(String FName, String LName, String CountryName, int r, int a, int w, int l)
  {
  firstName = FName;
  lastName = LName;
  country = CountryName;
  
  rank = r;
  age = a;
  wins = w;
  losses = l;
  }
  public void setFirstName(String FName)
  {
    firstName = FName;
  }
  
  public void setLastName(String LName)
  {
lastName = LName;
  }
  
  public void setCountry(String CountryName)
  {
    country = CountryName;
  }
  
  public void setRank(int r)
  {
    rank = r;
  }
  
  public void setAge(int a)
  {
age = a;
  }
  
  public void setWins(int w)
  {
    wins = w;
  }
  
  public void setLosses(int l)
  {
    losses = l;
  }
  
  public String getFirstName()
  { 
    return firstName;
  }
  public String getLastName()
  { 
    return lastName;
  }
  
  public String getCountry()
  { 
    return country;
  }
  public int getRank()
  { 
    return rank;
  }
  public int getAge()
  { 
    return age;
  }
  
  public int getWins()
  { 
    return wins;
  }
  
  public int getLosses()
  { 
    return losses;
  }
 
   
  public double calcWinPercentage()
  {
     totalGames = wins +losses;
      if(totalGames != 0)
      {
      winningPercentage = (wins / totalGames);
      }else {
      winningPercentage = -1;}
 
      return winningPercentage;
  }
  
  public void displayPlayer()
  {   
      System.out.println("Tennis Player: " + firstName + "" + lastName);
      System.out.println("Country: " + country + "\n");
      System.out.println("Rank: " + rank + "\n");
      System.out.println("Age: " + age + "\n");
      System.out.println("Wins: " + wins);
      System.out.println("Losses: " + losses);
      System.out.println("Winning Percentage : " + winPercentage*100);
      System.out.println("----------------------------");
      System.out.println("----------------------------");
  }
}
public class ShresthaTennisPlayer
{
  private String firstName;
  private String lastName;
  
  private String country;
  
  private int rank;
  private int age;
  
  private int wins;
  private int losses;
  
  double winningPercentage;
  double totalGames;
  
  double winPercentage = calcWinPercentage();
  
  public ShresthaTennisPlayer()
  { 
      firstName = null;
      lastName = null;
      country = null;
      
      rank = 0;
      age = 0;
      wins = 0;
      losses = 0; 
  }
  
  public ShresthaTennisPlayer(String FName, String LName, String CountryName)
  {
  firstName = FName;
  lastName = LName;
  country = CountryName;
  
  rank = 0;
  age = 0;
  wins = 0;
  losses = 0;
  }
  
  
  public ShresthaTennisPlayer(String FName, String LName, String CountryName, int r, int a)
  {
  firstName = FName;
  lastName = LName;
  country = CountryName;
  
  rank = r;
  age = a;
  wins = 0;
  losses = 0;
  }
  
  public ShresthaTennisPlayer(String FName, String LName, String CountryName, int r, int a, int w, int l)
  {
  firstName = FName;
  lastName = LName;
  country = CountryName;
  
  rank = r;
  age = a;
  wins = w;
  losses = l;
  }
  public void setFirstName(String FName)
  {
    firstName = FName;
  }
  
  public void setLastName(String LName)
  {
lastName = LName;
  }
  
  public void setCountry(String CountryName)
  {
    country = CountryName;
  }
  
  public void setRank(int r)
  {
    rank = r;
  }
  
  public void setAge(int a)
  {
age = a;
  }
  
  public void setWins(int w)
  {
    wins = w;
  }
  
  public void setLosses(int l)
  {
    losses = l;
  }
  
  public String getFirstName()
  { 
    return firstName;
  }
  public String getLastName()
  { 
    return lastName;
  }
  
  public String getCountry()
  { 
    return country;
  }
  public int getRank()
  { 
    return rank;
  }
  public int getAge()
  { 
    return age;
  }
  
  public int getWins()
  { 
    return wins;
  }
  
  public int getLosses()
  { 
    return losses;
  }
 
   
  public double calcWinPercentage()
  {
     totalGames = wins +losses;
      if(totalGames != 0)
      {
      winningPercentage = (wins / totalGames);
      }else {
      winningPercentage = -1;}
 
      return winningPercentage;
  }
  
  public void displayPlayer()
  {   
      System.out.println("Tennis Player: " + firstName + "" + lastName);
      System.out.println("Country: " + country + "\n");
      System.out.println("Rank: " + rank + "\n");
      System.out.println("Age: " + age + "\n");
      System.out.println("Wins: " + wins);
      System.out.println("Losses: " + losses);
      System.out.println("Winning Percentage : " + winPercentage*100);
      System.out.println("----------------------------");
      System.out.println("----------------------------");
  }
}

Ответы [ 2 ]

0 голосов
/ 01 августа 2020

Вы получили -100 coz в своем calcWinPercentage (), он возвращает -1. А затем в displayPlayer () вы умножаете на 100.

Попробуйте выполнить отладку в IDE, например, в Intellij Community Edition или Eclipse.

0 голосов
/ 01 августа 2020

Строка double winPercentage = calcWinPercentage() выполняется перед вызовом конструктора, поэтому ваши переменные wins и losses еще не установлены. Поскольку у вас уже есть переменная winningPercentage, вы можете просто вызвать calcWinPercentage() в конце ваших конструкторов, чтобы установить winningPercentage, например:

  public ShresthaTennisPlayer(String FName, String LName, String CountryName, int r, int a)
  {
  firstName = FName;
  lastName = LName;
  country = CountryName;
  
  rank = r;
  age = a;
  wins = 0;
  losses = 0;

  calcWinPercentage();
  }

Затем в своем методе displayPlayer() измените * От 1011 * до winningPercentage

...