为了账号安全,请及时绑定邮箱和手机立即绑定

为什么从文件中读取并将详细信息存储在类中会提供垃圾值?

为什么从文件中读取并将详细信息存储在类中会提供垃圾值?

阿晨1998 2021-12-10 15:38:23
以下是我用来从文件中读取并将详细信息保存在ArrayList两个类Iphone和 中的代码Ipad,但显然这出现了问题。我为这段代码得到的输出是:Iphone@28d93b30 和 IndexOutOfBoundException 用于 ipads.get(0)try {            fScanner = new Scanner(new File("apple.txt"));        }         catch (FileNotFoundException e) {            System.out.println(e.toString());        }        ArrayList<Iphone> iphones = new ArrayList<>();        ArrayList<Ipad> ipads = new ArrayList<>();        while(fScanner.hasNextLine()) {            String line = fScanner.nextLine();            Scanner lineScanner = new Scanner(line);            if(lineScanner.next().equals("IPHONE")) {                    String model = "IPHONE"+lineScanner.useDelimiter(",").next();                    String scrSze = lineScanner.useDelimiter(",").next();                    String proc = lineScanner.useDelimiter(",").next();                    String simT = lineScanner.useDelimiter(",").next();                    String clr = lineScanner.useDelimiter(",").next();                    String rom = lineScanner.useDelimiter(",").next();                    String is3dtouch = lineScanner.useDelimiter(",").next();                    String pric = lineScanner.useDelimiter(",").next();                    iphones.add(new Iphone(model,scrSze,proc,simT,clr,rom,is3dtouch,pric));             }            else if(lineScanner.next().equals("IPAD")) {                    String model = "IPAD"+lineScanner.useDelimiter(",").next();                    String scrSze = lineScanner.useDelimiter(",").next();                    String proc = lineScanner.useDelimiter(",").next();                    String iswifi = lineScanner.useDelimiter(",").next();                    String clr = lineScanner.useDelimiter(",").next();                    String memo = lineScanner.useDelimiter(",").next();                    String pric = lineScanner.useDelimiter(",").next();                    ipads.add(new Ipad(model,scrSze,proc,iswifi,clr,memo,pric));            }        }我很感激对上述问题的一个很好的解释。
查看完整描述

1 回答

?
DIEA

TA贡献1820条经验 获得超3个赞

你得到Iphone@28d93b30是因为你正在打印一个 Iphone,并且你没有覆盖toString()Iphone 类中的方法,这意味着Object.toString()正在执行默认方法。

你得到一个例外,因为你试图获得列表中的第一个 Ipad,而列表中没有任何 Ipad。没有,因为您调用了next()两次(一次在第一个if条件下,一次在第二个else if条件下,因此您与“IPAD”比较的标记是该行的第二个,而不是第一个。


查看完整回答
反对 回复 2021-12-10
  • 1 回答
  • 0 关注
  • 145 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号