javaoop-打印组合bean信息的问题

kx1ctssn  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(335)

我有一个任务来创造一个种族。我为工厂方法创建了一个类,并为每个字段生成随机值,除了我的奖牌信息之外,一切似乎都正常。在生成比赛时,除了“奖牌”之外,我得到了所有的字符串值,我似乎找不到它的原因。
我的代码

  1. public class RaceUtils {
  2. // Create new Medals Method
  3. public static Medal generateMedals() {
  4. int position = (int) ((Math.random() * 3) + 1);
  5. Medal medal = new Medal(position, "1500");
  6. return medal;
  7. }
  8. // Create new Driver Method
  9. public static Driver generateDriver() {
  10. Medal[] medals = new Medal[4];
  11. int age = (int) (Math.random() * 30) + 10;
  12. for (int i = 0; i < medals.length; i++) {
  13. medals[i] = generateMedals();
  14. }
  15. return new Driver("Dan", age, medals);
  16. }
  17. // Create new Car Method
  18. public static Car generateCar() {
  19. Driver[] drivers = new Driver[2];
  20. for (int i = 0; i < drivers.length; i++) {
  21. drivers[i] = generateDriver();
  22. }
  23. CarModels carModels = CarModels.values()[(int) (Math.random() * CarModels.values().length)];
  24. int year = (int) (Math.random() * 1990 - 2000) + 1990;
  25. return new Car(carModels, year, drivers);
  26. }
  27. // Create new Circuit Method
  28. public static Circuit generateCircuit() {
  29. Car[] cars = new Car[10];
  30. for (int i = 0; i < cars.length; i++) {
  31. cars[i] = generateCar();
  32. }
  33. CircuitName names = CircuitName.values()[(int) (Math.random() * CircuitName.values().length)];
  34. Country country = Country.values()[(int) (Math.random() * Country.values().length)];
  35. int length = (int) (Math.random() * 30) + 10;
  36. return new Circuit(names, country, length, cars);
  37. }
  38. // Print Method
  39. public static void print(Circuit[] circuit) {
  40. for (int i = 0; i < circuit.length; i++) {
  41. System.out.println(circuit[i].toString());
  42. }
  43. }
  44. public class Medal {
  45. private int position;
  46. private String string;
  47. public Medal(int position, String string) {
  48. setPosition(position);
  49. this.string = string;
  50. }
  51. public int getPosition() {
  52. return position;
  53. }
  54. public void setPosition(int position) {
  55. if (this.position > 0 || this.position <= 3) {
  56. this.position = position;
  57. } else {
  58. System.out.println("Position is out of range");
  59. }
  60. }
  61. public String getString() {
  62. return string;
  63. }
  64. public void setString(String string) {
  65. this.string = string;
  66. }
  67. @Override
  68. public String toString() {
  69. return "Medal [position=" + position + ", string=" + string + "]";
  70. }
  71. public class Driver {
  72. private String name;
  73. private int age;
  74. private Medal[] medals;
  75. public Driver(String name, int age, Medal[] medals) {
  76. this.name = name;
  77. this.age = age;
  78. this.medals = medals;
  79. }
  80. public String getName() {
  81. return name;
  82. }
  83. public void setName(String name) {
  84. this.name = name;
  85. }
  86. public int getAge() {
  87. return age;
  88. }
  89. public void setAge(int age) {
  90. this.age = age;
  91. }
  92. public Medal[] getMedals() {
  93. return medals;
  94. }
  95. public void setMedals(Medal[] medals) {
  96. this.medals = medals;
  97. }
  98. @Override
  99. public String toString() {
  100. return "Driver: Name = " + name + ", Age = " + age + ", Medals = " + medals;
  101. }
  102. public class Car {
  103. private CarModels models;
  104. private int year;
  105. private Driver[] drivers;
  106. public Car(CarModels models, int year, Driver[] drivers) {
  107. this.models = models;
  108. this.year = year;
  109. this.drivers = drivers;
  110. }
  111. public CarModels getModels() {
  112. return models;
  113. }
  114. public void setModels(CarModels models) {
  115. this.models = models;
  116. }
  117. public int getYear() {
  118. return year;
  119. }
  120. public void setYear(int year) {
  121. this.year = year;
  122. }
  123. public Driver[] getDrivers() {
  124. return drivers;
  125. }
  126. public void setDrivers(Driver[] drivers) {
  127. this.drivers = drivers;
  128. }
  129. @Override
  130. public String toString() {
  131. return "Car: Model = " + models + ", Car Year = " + year + ", Drivers: " + Arrays.toString(drivers);
  132. }
  133. public class Circuit {
  134. private CircuitName names;
  135. private Country country;
  136. private int length;
  137. private Car[] cars;
  138. public Circuit(CircuitName names, Country country, int length, Car[] cars) {
  139. this.names = names;
  140. this.country = country;
  141. this.length = length;
  142. this.cars = cars;
  143. }
  144. public CircuitName getNames() {
  145. return names;
  146. }
  147. public void setNames(CircuitName names) {
  148. this.names = names;
  149. }
  150. public Country getCountry() {
  151. return country;
  152. }
  153. public void setCountry(Country country) {
  154. this.country = country;
  155. }
  156. public int getLength() {
  157. return length;
  158. }
  159. public void setLength(int length) {
  160. this.length = length;
  161. }
  162. public Car[] getCars() {
  163. return cars;
  164. }
  165. public void setCars(Car[] cars) {
  166. this.cars = cars;
  167. }
  168. @Override
  169. public String toString() {
  170. return "Circuit: Circuit Name: " + names + ", Country: " + country + ", Circuit Length: " + length
  171. + " Kilometers" + Arrays.toString(cars);
  172. }
  173. public class RaceProgram {
  174. private static final int LEN = 4;
  175. public static void main(String[] args) {
  176. Circuit[] circuit = new Circuit[LEN];
  177. for (int i = 0; i < circuit.length; i++) {
  178. circuit[i] = RaceUtils.generateCircuit();
  179. }
  180. RaceUtils.print(circuit);
  181. }

我得到了什么
赛道:赛道名称:usaraceopen,国家:美国,赛道长度:13公里[车:车型=三菱,车年=1457,车手:[车手:姓名=丹,年龄=12,奖牌=[loop.classes.nir\u ex.ex14\u race.medal@782830e,车手:姓名=丹,年龄=20,奖牌=[loop.classes.nir\u ex.ex14\u race.dedal@470e2030],汽车:车型=法拉利,汽车年份=1831,驾驶员:[驾驶员:姓名=丹,年龄=37,奖牌=[loop.classes.nir\u ex.ex14\u race.medal@3fb4f649,车手:姓名=丹,年龄=21,奖牌=[loop.classes.nir\u ex.ex14\u race.medal@33833882],汽车:型号=马自达,汽车年份=628,驾驶员:[驾驶员:姓名=丹,年龄=27,奖牌=[loop.classes.nir\u ex.ex14\u race.madal@200a570f,车手:姓名=丹,年龄=19,奖牌=[loop.classes.nir\u ex.ex14\u race.dedal@16b3fc9e],汽车:车型=菲亚特,车年=1002,驾驶员:[驾驶员:姓名=丹,年龄=19,奖牌=[loop.classes.nir\u ex.ex14\u race.medal@e2d56bf,车手:姓名=丹,年龄=10,奖牌=[loop.classes.nir\u ex.ex14\u race.medal@244038d0],汽车:车型=法拉利,汽车年份=441,驾驶员:[驾驶员:姓名=丹,年龄=22,奖牌=[loop.classes.nir\u ex.ex14\u race.madal@5680a178,车手:姓名=丹,年龄=24,奖牌=[loop.classes.nir\u ex.ex14\u race.medal@5fdef03a],汽车:车型=菲亚特,车年=1651,驾驶员:[驾驶员:姓名=丹,年龄=30,奖牌=[loop.classes.nir\u ex.ex14\u race.madal@3b22cdd0,车手:姓名=丹,年龄=16,奖牌=[loop.classes.nir\u ex.ex14\u race.medal@1e81f4dc],汽车:型号=铃木,汽车年份=602,驾驶员:[驾驶员:姓名=丹,年龄=38,奖牌=[loop.classes.nir\u ex.ex14\u race.medal@4d591d15,车手:name=dan,age=32,奖牌=[loop.classes.nir\u ex.ex14\u race.dedal@65ae6ba4],汽车:车型=菲亚特,汽车年份=982,驾驶员:[驾驶员:姓名=丹,年龄=31,奖牌=[loop.classes.nir\u ex.ex14\u race.madal@48cf768c,车手:姓名=丹,年龄=18,奖牌=[loop.classes.nir\u ex.ex14\u race.medal@59f95c5d],汽车:车型=铃木,汽车年份=693,驾驶员:[驾驶员:姓名=丹,年龄=24,奖牌=[loop.classes.nir\u ex.ex14\u race.madal@5CD43C2,车手:姓名=丹,年龄=21,奖牌=[loop.classes.nir\u ex.ex14\u race.dedal@4aa8f0b4],汽车:型号=三菱,汽车年份=1595,驾驶员:[驾驶员:姓名=丹,年龄=37,奖牌=[loop.classes.nir\u ex.ex14\u race.madal@7960847b,车手:姓名=丹,年龄=17,奖牌=[loop.classes.nir\u ex.ex14\u race.dedal@6a6824be]]
我需要什么
如你所见,我把奖牌的所有信息都分开了。

col17t5w

col17t5w1#

问题出在driver类中,请尝试将方法tostring更改为如下内容

  1. public class Driver {
  2. @Override
  3. public String toString() {
  4. return "Driver: Name = " + name + ", Age = " + age + ", Medals = " + Arrays.toString(medals);
  5. }
  6. }

在所有类中使用array.tostring来显示数组的内容,但在驱动程序类中使用array.tostring。
输出

  1. Circuit: Circuit Name: null, Country: null, Circuit Length: 17 Kilometers[Car: Model = null, Car Year = 65, Drivers: [Driver: Name = Dan, Age = 12, Medals = [Medal [position=3, string=1500], Medal [position=1, string=1500], Medal [position=3, string=1500], Medal [position=1, string=1500]], Driver: Name = Dan, Age = 22, Medals = [Medal [position=1, string=1500], Medal [position=2, string=1500], Medal [position=3, string=1500], Medal [position=1, string=1500]]], Car: Model = null, Car Year = 1747, Drivers: [Driver: Name = Dan, Age = 18, Medals = [Medal [position=1, string=1500], Medal [position=1, string=1500], Medal [position=2, string=1500], Medal [position=3, string=1500]], Driver: Name = Dan, Age = 24, Medals = [Medal [position=1, string=1500], Medal [position=3, string=1500], Medal [position=2, string=1500], Medal [position=3, string=1500]]], Car: Model = null, Car Year = 1781, Drivers: [Driver: Name = Dan, Age = 18, Medals = [Medal [position=2, string=1500], Medal [position=1, string=1500], Medal [position=1, string=1500], Medal [position=3, string=1500]], Driver: Name = Dan, Age = 21, Medals = [Medal [position=2, string=1500], Medal [position=3, string=1500], Medal [position=3, string=1500], Medal [position=1, string=1500]]], Car: Model = null, Car Year = 28, Drivers: [Driver: Name = Dan, Age = 16, Medals = [Medal [position=3, string=1500], Medal [position=3, string=1500], Medal [position=2, string=1500], Medal [position=3, string=1500]], Driver: Name = Dan, Age = 39, Medals = [Medal [position=2, string=1500], Medal [position=3, string=1500], Medal [position=3, string=1500], Medal [position=3, string=1500]]], Car: Model = null, Car Year = 1789, Drivers: [Driver: Name = Dan, Age = 37, Medals = [Medal [position=1, string=1500], Medal [position=3, string=1500], Medal [position=3, string=1500], Medal [position=3, string=1500]], Driver: Name = Dan, Age = 38, Medals = [Medal [position=3, string=1500], Medal [position=2, string=1500], Medal [position=2, string=1500], Medal [position=3, string=1500]]], Car: Model = null, Car Year = 1413, Drivers: [Driver: Name = Dan, Age = 30, Medals = [Medal [position=2, string=1500], Medal [position=1, string=1500], Medal [position=1, string=1500], Medal [position=3, string=1500]], Driver: Name = Dan, Age = 18, Medals = [Medal [position=3, string=1500], Medal [position=2, string=1500], Medal [position=2, string=1500], Medal [position=1, string=1500]]], Car: Model = null, Car Year = 965, Drivers: [Driver: Name = Dan, Age = 33, Medals = [Medal [position=1, string=1500], Medal [position=1, string=1500], Medal [position=2, string=1500], Medal [position=3, string=1500]], Driver: Name = Dan, Age = 34, Medals = [Medal [position=1, string=1500], Medal [position=2, string=1500], Medal [position=3, string=1500], Medal [position=1, string=1500]]], Car: Model = null, Car Year = 1380, Drivers: [Driver: Name = Dan, Age = 38, Medals = [Medal [position=3, string=1500], Medal [position=3, string=1500], Medal [position=2, string=1500], Medal [position=3, string=1500]], Driver: Name = Dan, Age = 16, Medals = [Medal [position=1, string=1500], Medal [position=1, string=1500], Medal [position=2, string=1500], Medal [position=2, string=1500]]], Car: Model = null, Car Year = 581, Drivers: [Driver: Name = Dan, Age = 31, Medals = [Medal [position=2, string=1500], Medal [position=2, string=1500], Medal [position=1, string=1500], Medal [position=1, string=1500]], Driver: Name = Dan, Age = 34, Medals = [Medal [position=1, string=1500], Medal [position=1, string=1500], Medal [position=3, string=1500], Medal [position=3, string=1500]]], Car: Model = null, Car Year = 429, Drivers: [Driver: Name = Dan, Age = 12, Medals = [Medal [position=2, string=1500], Medal [position=2, string=1500], Medal [position=2, string=1500], Medal [position=1, string=1500]], Driver: Name = Dan, Age = 28, Medals = [Medal [position=2, string=1500], Medal [position=2, string=1500], Medal [position=1, string=1500], Medal [position=2, string=1500]]]]

相关问题