【问题标题】:error in lista.add(obj) and list<obj> javalist.add(object) 和 list<object> java 中的错误
【发布时间】:2014-11-18 16:55:43
【问题描述】:

我正在尝试解决 Java 中的 List 问题,但我不能。我有以下代码:

Productos producto = ... //come from a database, here there isn't errors

List<Productos> lista = new ArrayList<Productos>();

lista.set(0,producto);    

而且我不能在我的列表中介绍“producto”,我不知道为什么。我也尝试过使用"lista.add(producto)",但它不起作用。我能做什么?

Edit1:Producto 不为空,它已初始化,并且具有一些具有正确值的属性。我也使用了 lista.add(0,producto) 但它不起作用:(。错误是:

Grave: java.lang.NumberFormatException: null
at java.lang.Integer.parseInt(Integer.java:454)
at java.lang.Integer.parseInt(Integer.java:527)
at clientesCarrito.ClienteCarritoCompraServlet.doPost(ClienteCarritoCompraServlet.java:68)

是的,对 Int 进行“错误转换”似乎是一个错误,但我不认为..这是我的代码的一部分:

EntityManager em = entityManagerFactory.createEntityManager();
.
.
int id = Integer.parseInt(request.getParameter("IdProd"));
Productos producto = em.find(Productos.class,id);
HttpSession session = request.getSession(false);

if(session.getAttribute("carProductos")==null){
    List<Productos> lista = new ArrayList<Productos>();
    lista.add(producto);
    session.setAttribute("carProductos", lista);
}else{
    List<Productos> lista = (List<Productos>) session.getAttribute("carProductos");
    lista.add(producto);
    session.setAttribute("carProductos", lista);
}

我已经在 Eclipse 中进行了调试,“IdProd”是 5,“id”也是 5。现在它看起来像“lista”捕获“producto”并自我介绍,但是当它在底部时突然显示错误并崩溃。在这段代码之后,我不再使用“lista”或“producto”。有人可以帮助我吗?

【问题讨论】:

  • 请告诉我们确切的文字错误。
  • 怎么不工作? producto 是否为空?
  • 你试过 lista.add(0, producto)

标签: java list object initialization initializer-list


【解决方案1】:

以下是 java.util.ArrayList.add() 方法的声明 public void add(int index, E element)

所以用

lista.add(0, producto)

【讨论】:

  • 欢迎来到 bufferOverflow!
  • 谢谢你们! lista.add(0,producto) 不起作用,因为 lista 未初始化..
【解决方案2】:

List 中的set 方法在将元素设置在不在0size() - 1 之间的位置时会引发错误。在一个空的 List 上,你永远不能在 set 一个元素上。来自:https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#set%28int,%20E%29

抛出: IndexOutOfBoundsException - 如果索引超出范围 (index = size())

我猜你想要做的是向列表中添加一个元素;因为List 是空的,所以唯一有效的位置是零:

lista.add(producto);

add 方法将元素添加到列表的末尾。在空列表的情况下,它将元素添加为唯一元素。

【讨论】:

  • 原评论不匹配添加与集合。
  • 哇,你发现我的错误比我编辑我的评论还快 - 很抱歉造成混乱。
  • @SirRichie 我希望这是最后一次——开个玩笑。感谢您的评论
猜你喜欢
  • 1970-01-01
  • 2021-12-15
  • 2011-02-20
  • 1970-01-01
  • 2012-04-16
  • 2013-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多