Java 打印ArrayList multipe值时,仅显示->';[]和#x27;

Java 打印ArrayList multipe值时,仅显示->';[]和#x27;,java,arraylist,command-line,Java,Arraylist,Command Line,我在Java中显示ArrayList的元素时遇到问题。当从视图调用它时,返回ArrayList,返回包含虚拟值表单的bmiAnalyzer类。它显示了 [] [] 当java文件运行时 Views.java Switch(choice[0]){ case 1: //Option 1 to display the data fo subject of given subject id. ArrayList<Records> arraylist

我在Java中显示
ArrayList
的元素时遇到问题。当从视图调用它时,返回
ArrayList
,返回包含虚拟值表单的bmiAnalyzer类。它显示了
[] []
当java文件运行时

  • 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");
    }
    
    开关(选项[0]){
    案例1:
    //选项1显示给定主题id的主题数据。
    ArrayList ArrayList=analyzer.find(选项[1]);
    System.out.println(ArrayList);
    打破
    案例2:
    //选项2显示给定BMI范围内的受试者数据。
    ArrayList arraylistList=analyzier.find(Double.parseDouble(选项[1]),Double.parseDouble(选项[2]);
    对于(int i=0;i
  • bmiAnalyzer.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;
        }
    }
    
    公共类BMI分析器{
    公共记录查找(字符串sid){
    System.out.println(新记录(sid,0.0,0.0,0.0,“无”);
    返回新记录(sid,0.0,0.0,0.0,“无”);
    }
    公共阵列列表查找(双倍bmi1,双倍bmi2){
    ArrayList alr=新的ArrayList();
    alr.add(新记录(“S01”,0.0,0.0,0.0,“无”);
    alr.add(新记录(“S02”,0.0,0.0,0.0,“无”);
    返回alr;
    }
    }
    
  • 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.
    }
    
    公共类记录扩展了ArrayList{
    私有字符串主语;
    私人双高;
    私人双宽度;
    私人双分析员;
    私有字符串类别;
    public ArrayList list=new ArrayList();
    公共记录(字符串sid、双h、双w、双bmi、字符串c){
    }
    //getter和setter方法。
    }
    
  • 输出:


    主要的秘密在于您拥有
    记录
    类扩展
    数组列表
    。我不知道您为什么要这样做,但是在这样的情况下,您继承了
    ArrayList
    toString()
    方法,该方法是呈现
    []
    的方法,因为数组是空的。您需要为
    记录
    类实现
    toString()

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

    我想你是java新手吧。你需要先了解基本知识。例如,在您的示例中,ArrayList是一个用于保存相同类型的多个值的集合。使用Records类,您可以扩展此处不需要的集合

    公共类记录扩展了ArrayList{

    应该是

    公开课堂记录{

    此外,您应该始终向类构造函数提供内容,否则不会为对象设置任何值

        public Records(String sid, Double h, Double w, Double bmi, String c) {
            this.SubjectId = sid;
           // set other values as well
        }
    
    并且,find(stringsid)返回记录对象

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

    要打印记录对象的值,请按照@Niklas的建议执行

    来吧,如果您不想费心格式化代码并使问题可读,为什么您认为我们可以费心回答/帮助您?显然它是空的。您的中断和切换命令如何工作……我想知道??
    Records record = analyzier.find(choice[1]);