Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 这段代码会输出相同的结果吗?_Java_Loops - Fatal编程技术网

Java 这段代码会输出相同的结果吗?

Java 这段代码会输出相同的结果吗?,java,loops,Java,Loops,我正在复习AP计算机科学考试,我写的代码和答案有点不同。您认为您可以检查每个输出是否相同吗 目标:从CookieOrder ArrayList订单中删除特定类型的Cookie订单,并返回已删除的框数。 请假设所有方法都按照建议工作 答复: 返回框被移除; } 我说: 这还能用吗?或者,如果你想给我打分,这里是(问题1,B部分)。我感谢你的帮助;明天就要考试了,我非常紧张 这还能用吗 您的代码将因出现ConcurrentModificationException而失败,因为您在迭代集合时正在修改集

我正在复习AP计算机科学考试,我写的代码和答案有点不同。您认为您可以检查每个输出是否相同吗

目标:从CookieOrder ArrayList订单中删除特定类型的Cookie订单,并返回已删除的框数。 请假设所有方法都按照建议工作

答复:

返回框被移除; }

我说:

这还能用吗?或者,如果你想给我打分,这里是(问题1,B部分)。我感谢你的帮助;明天就要考试了,我非常紧张

这还能用吗

您的代码将因出现
ConcurrentModificationException
而失败,因为您在迭代集合时正在修改集合

模型答案通过使用索引而不是
迭代器来避免这种情况。。。从名单的末尾到最前面

另一种避免CME问题的方法是使用显式迭代器,并使用
iterator.remove()
方法进行删除。(这将适用于
ArrayList
LinkedList
,但由于某些原因,一些更奇特的列表类型可能会返回一个不支持
remove()
迭代器。)

这还能用吗

您的代码将因出现
ConcurrentModificationException
而失败,因为您在迭代集合时正在修改集合

模型答案通过使用索引而不是
迭代器来避免这种情况。。。从名单的末尾到最前面


另一种避免CME问题的方法是使用显式迭代器,并使用
iterator.remove()
方法进行删除。(这将适用于
数组列表
链接列表
,但一些更奇特的列表类型可能会返回一个
迭代器
,该迭代器由于某些原因不支持
删除()

,这将抛出一个
ConcurrentModificationException
,因为您在遍历列表时正在从列表中删除一个项目

一种安全的方法是使用迭代器。是所有集合(包括
ArrayList
s)必须提供的内置类。迭代器为您提供了一种在列表上进行迭代的方法(很像您使用的
for
-循环),但也允许您从集合中安全地删除元素

首先从
ArrayList
iterator
方法获取迭代器。与
ArrayList
类似,
Iterator
是通用的–也就是说,它是
迭代器
,而不仅仅是
迭代器

Iterator<CookieOrder> iterator = order.iterator();
特别针对您的问题:

Iterator<CookieOrder> iterator = order.iterator();
while (iterator.hasNext()) {
    // Get the boxes cookie order.
    CookieOrder boxes = iterator.next();

    // Perform the same check as before.
    String type = boxes.getVariety();
    int totalBoxesCookieOrder = boxes.getNumBoxes();
    if(type.equals(cookieType))
    {
        totalRemoved += totalBoxesCookieOrder;

        // Here's where we want to remove it.
        //
        // Instead of calling order.remove, we can use the 
        // "remove" method of the iterator. This is safe.
        iterator.remove();
    }
}
Iterator Iterator=order.Iterator();
while(iterator.hasNext()){
//把盒子拿出来点饼干。
CookieOrder Box=iterator.next();
//执行与之前相同的检查。
字符串类型=box.getVariation();
int totalBoxesCookieOrder=box.getNumBoxes();
if(type.equals(cookieType))
{
totalRemoved+=TotalBoxesTookeOrder;
//这是我们想要移除它的地方。
//
//我们可以使用
//迭代器的“remove”方法。这是安全的。
iterator.remove();
}
}

评分标准(B部分):

  • +1/2用于访问
    this.orders的元素(虽然是隐式的,但带有
  • +1/2用于将
    cookieVar
    cookieType
    )与
    GetVariation()的结果进行比较
  • +1用于所有元素的比较,无越界电位
  • 没有要删除的点数(接下来的三个条件,值两个点数),因为它将引发异常
  • +1/2用于声明和初始化
    totalRemoved
  • +1/2用于
    getNumBoxes
  • +用
    +=
    正确累加总数的1/2(尽管他们可能会选择不为
    ConcurrentModificationException
    给出这一点,但根据我的经验,他们只会对错误惩罚一次)
  • +1/2用于正确返回
总分:4/6

记住,那个分数只适用于那个部分;外推,你的问题分数可能是6/9,这已经高于平均分数(5.46)。还要记住,这些不是线性分级的;i、 例如,答对50%的问题是很好的


祝你考试顺利

正如其他人所提到的,这将抛出一个
ConcurrentModificationException
,因为您在迭代列表时正在从列表中删除一个项目

一种安全的方法是使用迭代器。是所有集合(包括
ArrayList
s)必须提供的内置类。迭代器为您提供了一种在列表上进行迭代的方法(很像您使用的
for
-循环),但也允许您从集合中安全地删除元素

首先从
ArrayList
iterator
方法获取迭代器。与
ArrayList
类似,
Iterator
是通用的–也就是说,它是
迭代器
,而不仅仅是
迭代器

Iterator<CookieOrder> iterator = order.iterator();
特别针对您的问题:

Iterator<CookieOrder> iterator = order.iterator();
while (iterator.hasNext()) {
    // Get the boxes cookie order.
    CookieOrder boxes = iterator.next();

    // Perform the same check as before.
    String type = boxes.getVariety();
    int totalBoxesCookieOrder = boxes.getNumBoxes();
    if(type.equals(cookieType))
    {
        totalRemoved += totalBoxesCookieOrder;

        // Here's where we want to remove it.
        //
        // Instead of calling order.remove, we can use the 
        // "remove" method of the iterator. This is safe.
        iterator.remove();
    }
}
Iterator Iterator=order.Iterator();
while(iterator.hasNext()){
//把盒子拿出来点饼干。
CookieOrder Box=iterator.next();
//执行与之前相同的检查。
字符串类型=box.getVariation();
int totalBoxesCookieOrder=box.getNumBoxes();
if(type.equals(cookieType))
{
totalRemoved+=TotalBoxesTookeOrder;
//这是我们想要移除它的地方。
//
//我们可以使用
//迭代器的“remove”方法。这是安全的。
iterator.remove();
}
}

评分标准(B部分):

    Iterator<CookieOrder> iterator = order.iterator(); while (iterator.hasNext()) { // Get the boxes cookie order. CookieOrder boxes = iterator.next(); // Perform the same check as before. String type = boxes.getVariety(); int totalBoxesCookieOrder = boxes.getNumBoxes(); if(type.equals(cookieType)) { totalRemoved += totalBoxesCookieOrder; // Here's where we want to remove it. // // Instead of calling order.remove, we can use the // "remove" method of the iterator. This is safe. iterator.remove(); } }
Iterator<CookieOrder> it = orders.iterator();
while (it.hasNext()) {
    CookieOrder cand = it.next();    // 'candidate' for consideration/ removal
    if (cand.getVariety. equals( type)) {
        // Remove;  iterator.remove() handles the loop index correctly.
        boxesRemoved += cand.getNumBoxes();
        it.remove();
    }
}