繁体   English   中英

当打印ArrayList乘法值时,它仅显示->'[]'

[英]While printing ArrayList multipe value it displays only -> '[]'

我在用Java显示ArrayList的元素时遇到问题。 当返回ArrayList时,它从Views调用到BMIAnalyzier类,该类现在包含伪值表单。 表明
[] []
运行Java文件时。

  1. Views.java

     Switch(choice[0]){ case 1: //Option 1 to display the data fo subject of given subject id. ArrayList<Records> arraylist = analyzier.find(choice[1]); System.out.println(ArrayList); Break; Case 2: //Option 2 to display the data fo subject from the range given of BMI. ArrayList<Records> arraylistList = analyzier.find(Double.parseDouble(choice[1]),Double.parseDouble(choice[2])); for (int i = 0; i < arraylistList.size(); i++){ System.out.println((arraylistList.get(i)).toString()); } Break; default: System.out.println("wrong input"); } 
  2. BMIAnalyzier.java

     public class BMIAnalyzier { public Records find(String sid) { System.out.println(new Records(sid, 0.0, 0.0, 0.0, "none")); return new Records(sid, 0.0, 0.0, 0.0, "none"); } public ArrayList<Records> find(double bmi1, double bmi2) { ArrayList<Records> alr = new ArrayList<>(); alr.add(new Records("S01", 0.0, 0.0, 0.0, "none")); alr.add(new Records("S02", 0.0, 0.0, 0.0, "none")); return alr; } } 
  3. Records.java

     public class Records extends ArrayList<Records> { private String SubjectId; private Double height; private Double width; private Double bmianalyzier; private String categories; public ArrayList <Records> list =new ArrayList<>(); public Records(String sid, Double h, Double w, Double bmi, String c) { } //getter ans setter methods. } 

输出:

在这里,我输入选项2和范围0 100,结果在下面的图片中,但是我要显示ArrayList.in中的值以查看我的结果,请单击this。

主要的奥秘在于您具有Records类扩展ArrayList 我不知道为什么要这样做,但是在这种情况下,您继承了ArrayListtoString()方法,因为该方法为空,所以它是呈现[]方法。 您需要为Records类实现toString()

String toString() {
    return subjectId + " " + height + " " + width + " " + bmianalyzier + " " + categories;
}

我想您是Java新手。 您需要首先了解基础知识。 例如,在您的情况下,ArrayList是一个集合,您可以使用它保存相同类型的多个值。 通过您的Records类,您可以扩展此处不需要的集合。

公共类Records扩展ArrayList <Records> {

应该

公共课记录{

另外,您应始终向类构造方法提供内容,否则将不会为该对象设置任何值。

    public Records(String sid, Double h, Double w, Double bmi, String c) {
        this.SubjectId = sid;
       // set other values as well
    }

并且,find(String sid)返回Records对象

ArrayList < Records > arraylist = analyzier.find(choice[1]);

应该更改为

Records record = analyzier.find(choice[1]);

要打印Records对象的值,请按照@Niklas的建议进行操作

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM