Java列表迭代

时间:2016-02-16 18:54:18

标签: java

for (int i =0; i < Entry.size(); i++) {
    if (Math.abs(Entry.contains(Entry[i]-(Entry[i+1])))

给定list = {4,1,4,2,3}或用户输入的内容。我基本上想要计算第一个索引0是否减去第二个索引1等于列表中的任何其他值(绝对值)。我的尝试在上面;我认为它会起作用,但事实并非如此。

如果列表包含值4 - 1 = (3), 1 - 4 = (3), 4 - 2 = (2), 2 - 3 = (1)输出,则某些消息基本上就是我想要做的。

有没有人知道使用列表的任何方式?
如果我的错误是微不足道的话,我是编程的新手,对我很轻松。

4 个答案:

答案 0 :(得分:0)

您不能按照您尝试的方式使用i - i + 1,也不能按照您尝试的方式使用i - i + 11只是 entry.contains(Math.abs(entry.get(i) - entry.get(i + 1)))

可以做什么就像

i

...虽然你还需要限制i的高度,因为[ref setValue@"2pm"] 只能与 second 一样高到列表中的最后一个条目。我将让您了解如何更改for循环。

答案 1 :(得分:0)

这可能会对你有所帮助:

ArrayList<Integer> entry = new ArrayList<>(); //You might want to use arraylist to help you
entry.add(1);
entry.add(2);
entry.add(3);
for(int i=1;i< entry.size();i++)
    if (entry.contains(Math.abs(entry.get(i)-entry.get(i-1))))
         System.out.println("Got one such element..");

注意:Entry可以是java.util.map的界面。尝试使用更好的约定。

答案 2 :(得分:0)

由于您要检查扣除下一个元素的每个元素,您可能希望将循环限制为比列表大小小1,因此它不会扣除最后一个元素(不存在) element)在你的最后一个元素之后:

for(int x=0; x<list.size()-1; x++)  //iterate first element to 2nd last element
    if (list.contains(Math.abs(list.get(x)-list.get(x+1))))
         //Do whatever you want if such element is found
Entry.contains(Entry[i]-(Entry[i+1])

会返回boolean(true/false)

但是,Math.abs()期望数值(int,long,float或double)作为其参数。您当前的代码Math.abs(Entry.contains(Entry[i]-(Entry[i+1]))会给您一个错误。

答案 3 :(得分:0)

这段代码可能对他有帮助

ArrayList<Integer>  at = new ArrayList<Integer>();// declare your list

at.add(4);
at.add(2);
at.add(1);
at.add(1);
for (int i = 0 ; i <at.size() ; i++) {
    if (i+1 == at.size()) {/// to avoid out ofboundexception
        break;
    }

    if (at.contains(at.get(i)-at.get(i+1))) {// contains the result.
        System.out.println("Success");
    }
}

注意:不确定是否要考虑所检查的值,例如在上面的场景中4 -2 = 2这是第二个元素