为什么我的程序在重复java错误

fykwrbwg  于 2021-07-13  发布在  Java
关注(0)|答案(2)|浏览(334)

我应该让程序给出宠物的数量,以及低于5磅、5-10磅和超过10磅的宠物数量的百分比。程序不断重复这些语句,我不知道为什么。在过去的几天里,我一直在研究这个问题,但我还是搞不懂。有时我好像把它修好了,但后来又发生了。有人能解释为什么会这样吗?我需要帮助。

  1. import java.util.*;
  2. import java.util.Collections;
  3. import java.util.Comparator;
  4. import java.lang.Object;
  5. public class SetPetWeight
  6. {
  7. public static void main(String[] args) {
  8. ArrayList<Pet> list = new ArrayList<Pet>();
  9. String name;
  10. String answer;
  11. int age;
  12. Double weight;
  13. Scanner keyboard = new Scanner(System.in);
  14. do
  15. {
  16. System.out.println("Enter a String for Pet name: ");
  17. name = keyboard.next();
  18. System.out.println("Enter an int for Pet age: ");
  19. age = keyboard.nextInt();
  20. if(age <= 0)
  21. System.out.println("Error! Enter a real age");
  22. System.out.println("Enter a double for Pet weight: ");
  23. weight = keyboard.nextDouble();
  24. if(weight <= 0)
  25. System.out.println("Error! Enter a real weight");
  26. do
  27. {
  28. System.out.println("Do you want to enter another pet? Y/N");
  29. answer = keyboard.nextLine();
  30. keyboard.nextLine();
  31. } while (answer.equalsIgnoreCase("Y"));
  32. } while (name.length() < 0 && age < 0 && weight < 0);
  33. System.out.println("The weight is now sorted by weight!");
  34. Collections.sort(list, Pet.SortByWeight);
  35. for (Pet p2 : list)
  36. p2.writeOutput();
  37. int average1 = 0;
  38. int average2 = 0;
  39. int average3 = 0;
  40. for (Pet p : list)
  41. {
  42. if(p.getWeight() >= 0 && p.getWeight() <= 5)
  43. {
  44. ++average1;
  45. }
  46. else if(p.getWeight() >= 5 && p.getWeight() <= 10)
  47. {
  48. ++average2;
  49. }
  50. else if(p.getWeight() > 10)
  51. {
  52. ++average3;
  53. }
  54. System.out.println("The average of pets under 5 pounds:" + average1);
  55. System.out.println("The average of pets between 5 and 10 pounds:" + average2);
  56. System.out.println("The average of pets over 10 pounds:" + average3);
  57. }
  58. }
  59. }

用于setpetweight类并正确编译并用于数组的pet类。

  1. import java.util.*;
  2. public class Pet {
  3. private String name;
  4. private Integer age; // in years
  5. private double weight; // in pounds
  6. public void writeOutput() {
  7. System.out.println("Name: " + name);
  8. System.out.println("Age: " + age + " years");
  9. System.out.println("Weight: " + weight + " pounds");
  10. }
  11. public void set(String newName) {
  12. name = newName;
  13. // age and weight are unchanged.
  14. }
  15. public void set(int newAge) {
  16. if (newAge <= 0) {
  17. System.out.println("Error: illegal age.");
  18. System.exit(0);
  19. } else
  20. age = newAge;
  21. // name and weight are unchanged.
  22. }
  23. public void set(double newWeight) {
  24. if (newWeight <= 0) {
  25. System.out.println("Error: illegal weight.");
  26. System.exit(0);
  27. } else
  28. weight = newWeight;
  29. // name and age are unchanged.
  30. }
  31. public Pet(String name, int age, double weight) {
  32. this.name = name;
  33. this.age = age;
  34. this.weight = weight;
  35. }
  36. public String getName() {
  37. return name;
  38. }
  39. public int getAge() {
  40. return age;
  41. }
  42. public double getWeight() {
  43. return weight;
  44. }
  45. public static Comparator<Pet> SortByWeight = new Comparator<Pet>()
  46. {
  47. public int compare(Pet pet1, Pet pet2)
  48. {
  49. return (int)(pet1.getWeight() - pet2.getWeight());
  50. }
  51. };
  52. }
h7wcgrx3

h7wcgrx31#

移动 keyboard.nextLine(); 之后 weight = keyboard.nextDouble(); 使用悬挂的换行符。

68bkxrlz

68bkxrlz2#

您可能需要做一些更改。1.每次你检索用户输入的宠物的名字,年龄和体重。您可能需要创建一个pet类型的对象来存储这些值,然后将其添加到arraylist中。在你问他们是否想再添一只宠物之前。2.移除外部do while循环,并将inter循环更改为包含“enterastringforpetname:”。3.还要检查输入的有效性。

  1. do {
  2. System.out.println("Enter a String for Pet name: ");
  3. name = keyboard.next();
  4. System.out.println("Enter an int for Pet age: ");
  5. age = keyboard.nextInt();
  6. if(age <= 0)
  7. System.out.println("Error! Enter a real age");
  8. System.out.println("Enter a double for Pet weight: ");
  9. weight = keyboard.nextDouble();
  10. keyboard.nextLine();
  11. if(weight <= 0)
  12. System.out.println("Error! Enter a real weight");
  13. System.out.println("Do you want to enter another pet? Y/N");
  14. answer = keyboard.nextLine();
  15. keyboard.nextLine();
  16. } while (answer.equalsIgnoreCase("Y"));
展开查看全部

相关问题