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)
输出,则某些消息基本上就是我想要做的。
有没有人知道使用列表的任何方式?
如果我的错误是微不足道的话,我是编程的新手,对我很轻松。
答案 0 :(得分:0)
您不能按照您尝试的方式使用i - i + 1
,也不能按照您尝试的方式使用i - i + 1
。 1
只是 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这是第二个元素