【问题标题】:printing out data of array element in java在java中打印出数组元素的数据
【发布时间】:2013-10-18 10:05:04
【问题描述】:

如果我有一个类类型(汽车)的数组,并且每辆汽车都有一个品牌和型号 使用 set 方法,我怎样才能打印出特定元素的品牌和型号? 我需要在单独的类中打印出来

public class Car {   

    private String make;
    private String model;

    public void setMake (String str1) {

        make = str1;

    }

    public void setModel (String str2) {

        model = str2;

    }

【问题讨论】:

  • 最简单的方法是重写它的 toString() 方法
  • 为什么在此处标记排序
  • 我们可以看看您的 Car 课程,然后我们可以建议您如何添加 toString()
  • 从众多汽车中挑选汽车需要哪些基本知识?!

标签: java arrays


【解决方案1】:

你需要在你的类中添加一个toString() 方法

public class Car {   

    private String make;
    private String model;

    public void setMake (String str1) {

        make = str1;

    }

    public void setModel (String str2) {

        model = str2;

    }

    @Override
    public String toString() {
         return "Make  :"+ make + "  Model :" + model;
    }

}

只打印一辆车

然后您可以按如下方式使用它

public static void main(String[] args){
   Car car=new Car();
   car.setMake("Audi");
   car.setModel("ModelName");

   System.out.println(car);
}

打印整个数组

同样,如果它存在于汽车数组中(为了简洁起见,我正在使用我在注释中介绍的构造函数)

public static void main(String[] args){
   Car[] cars=new Car[3];
   cars[0]=new Car("Audi","ModelName");
   cars[1]=new Car("BMW","ModelName");
   cars[2]=new Car("Honda","ModelName");

   for(int i=0;i<cars.length;i++){
      System.out.println(cars[i]);
   }
}

用户选择索引后打印

   public static void main(String[] args){
        Car[] cars=new Car[3];
        cars[0]=new Car("Audi","ModelName");
        cars[1]=new Car("BMW","ModelName");
        cars[2]=new Car("Honda","ModelName");

        Scanner scan=new Scanner(System.in);
        System.out.println("Select index to print, should be between 0 and " + (cars.length-1));

        //checks that user actually inputs an integer, 
        //checking its in range is left as an excercise
        while (scan.hasNextInt()==false){
            scan.next(); //consume bad input
            System.out.println("Select index to print, should be between 0 and " + (cars.length-1));

        }
        int index=scan.nextInt();

        System.out.println(cars[index]);


    }

注意事项

似乎品牌和型号对于汽车类的工作至关重要,请考虑更改您的构造函数以将它们作为参数

public Car(String make, String model){
    this.make=make;
    this.model=model;
}

所有这些都假设您已经拥有要打印的元素

【讨论】:

  • 只添加toString() 不是解决方案。我猜(根据标题和问题描述)OP 想从一系列汽车中找到一辆特定的汽车,然后单独打印那辆。为什么要为此覆盖toString()?只需调用 SOP 中的 2 个吸气剂就足够了。另外,由于 OP 没有提到需要从汽车数组中选择什么基本的汽车,我们需要询问 OP。
  • @R.J “我怎样才能打印出特定元素的品牌和型号”
  • 如果我有一个类类型(汽车)的数组,并且使用 set 方法为每辆汽车指定了品牌和型号,那么我该如何打印出特定的品牌和型号元素? - 我真的怀疑问题是否与打印有关。我认为 OP 希望能够弄清楚如何获取特定元素(可能基于品牌或型号)并打印出来。 PRINT 不应该或者不是这里的优先事项。
  • @R.J 如果 OP 改变他们的问题以提出不同的问题,我会很乐意改变我的答案。但这是所问问题的答案。我不会假设这不可能是他们的问题
  • 我没有想要打印的元素。我的程序要求用户从数组中选择一个元素并打印该元素的详细信息,我该怎么做?
【解决方案2】:
class Car{

    String make ;
    String model;


    @Override
    public String toString() {
         return "make  :"+ this.make + "  model :" + this.model;
    }
}

List<Car> list= new ArrayList<Car>();

Car c1=new Car();
Car c2=new Car();
Car c3=new Car();
Car c4=new Car();
list.add(c1);
list.add(c2);
list.add(c3);
list.add(c4);

for(Car car : list)
{
    System.out.println(car);    
}

【讨论】:

  • @MarsOne 在我看来它很漂亮的 java-e
  • 抱歉忘了补充,我需要在另一个班级打印出来
  • 只添加toString() 不是解决方案。我猜(根据标题和问题描述)OP 想从一系列汽车中找到一辆特定的汽车,然后单独打印那辆。为什么要为此覆盖toString()?只需调用 SOP 中的 2 个吸气剂就足够了。另外,由于 OP 没有提到需要从汽车数组中选择什么基本的汽车,我们需要询问 OP。
【解决方案3】:
public class Car {   

    private String make;
    private String model;

    public Car(String make, String model) {
       this.make = make;
       this.model = model;
    }

    public void setMake (String str1) {

        make = str1;

    }

    public void setModel (String str2) {

        model = str2;

    }

    public String getMake() {
      return make;
    }

    public String getModel() {
      return model;
    }
}

public class PrintCars {
   public static void main(String []args) {

          Car cars[] = new Car[10];
          // Assume you populate the array with Car objects here by code
          cars[0] = new Car("make1", "model1");
          for (Car carObj : cars) {
            System.out.println(carObj.getmake());
            System.out.println(carObj.getmodel());
          }
    }
}

【讨论】:

    【解决方案4】:

    试试这个

    private static String toString(sample[] carTypes)
        {
            StringBuilder stringBuilder = new StringBuilder();
            for (int i = 0; i < carTypes.length; i++)
            {
                if (carTypes[i] != null)
                {
                    stringBuilder.append(" Name : ");
                    stringBuilder.append(carTypes[i].name);
                    stringBuilder.append(",");
                    stringBuilder.append(" Model : ");
                    stringBuilder.append(carTypes[i].model);
                    stringBuilder.append(",");
                }
            }
            return stringBuilder.toString().substring(0, stringBuilder.toString().length() - 1);
        }
    

    输出:

    Name : BMW, Model : Mark 3, Name : AUDI, Model : A-6, Name : BENZ, Model : BZ
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-10
      • 2013-10-27
      • 2016-08-27
      • 2011-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多