【问题标题】:Logic error with counter in my class我班上的计数器出现逻辑错误
【发布时间】:2016-09-22 00:34:16
【问题描述】:

我正在寻找的输出是每次在 main 中调用 .getNumber() 时的返回值 4。现在我每次都得到 0 的输出。首先你会找到我的带有计数器的 Car 类,然后是我创建 4 个对象然后调用 .getNumber() 方法的 main 的摘录。

public class Car{
  private String brand;
  private int year;
  private int price;
  private int number;
public Car(String b, int y, int p){
  brand = b;
  year = y;
  price = p;
}
public Car(){
  brand = "Chevy";
  year = 2005;
  price = 3000;
}
public String getBrand(){
  return brand;
}
public int getYear(){
  return year;
}
public int getPrice(){
  return price;
}
public int getNumber(){
  return number;
}   
public void setBrand(String b){
  brand = b;
}
public void setYear(int y){
  year = y;
}
public void setPrice(int p){
  price = p;
}
public void increment(){
  number++;
}   
}
Car car1 = new Car();
Car car2 = new Car("Ford", 2013, 20000);
Car car3 = new Car("Audi", 2012, 25000);
Car car4 = new Car();
  System.out.println("The total car number is: " + car1.getNumber());
  System.out.println("The total car number is: " + car2.getNumber());
  System.out.println("The total car number is: " + car3.getNumber());
  System.out.println("The total car number is: " + car4.getNumber());

【问题讨论】:

  • 为什么你的代码每次都打印 0?
  • 我在笔记本电脑上使用 jgrasp,这就是我得到的输出。
  • 当我运行程序时,这是我的输出: 总车数是:0 总车数是:0 总车数是:0 总车数是:0
  • 不,我不是这个意思。我请你解释一下流程。你为什么希望它打印其他东西?
  • increment() 永远不会被调用。但这不是唯一的问题......

标签: java class counter


【解决方案1】:

您需要将计数器设为静态。这样,它在类的所有实例之间共享。然后在您的构造函数中执行 counter++。

public class Car {
  private int number;
  private static int counter;
  public Car() {
    this.number = counter++;
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-26
    • 2021-10-10
    • 2017-11-29
    • 2017-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多