下面的代码应搜索两个数组以查找任何类似的数字,如果找到,则返回true
:
public class ArrayIntersect
{
public static void main(String[] args)
{
main();
}
public static void main()
{
boolean l = false;
intersection(l);
if(l = true)
{
System.out.println("There are matching variables in the arrays!");
}
else
System.out.println("There are no matching variables.");
}
public static boolean intersection(boolean l)
{
int[] one = new int[2];
int[] two = new int[2];
one[0] = 1;
one[1] = 2;
two[0] = 1;
two[1] = 3;
for(int i = 0; i < one.length; i++)
{
for(int j = 0; j < two.length; j++)
{
if(one[i] == two[j])
{
l = true;
return l;
}
}
}
for(int j = 0; j < two.length; j++)
{
for( int i = 0; i < one.length; i++)
{
if(two[j] == one[i])
{
l = true;
return l;
}
}
}
return false;
}
}
如果错误很简单,我很抱歉,因为我刚开始在这个网站上学习Java!此外,任何有关制作该计划的提示也将受到赞赏!
答案 0 :(得分:4)
此
if(l = true)
是作业。你想要
if (l == true)
或只是
if (l)
分配的副作用是分配的值。因此,l = true
会将true
分配给l
并评估true
中的if
。
此外,您的代码还有一些其他问题。您首先需要知道的是Java总是按值传递。而且你不需要传递boolean
。最后,我认为你真的想要
public static void main(String[] args) {
boolean l = intersection(); // <-- can't modify caller's "reference"
if (l) {
System.out.println("There are matching variables in the arrays!");
} else {
System.out.println("There are no matching variables.");
}
}
然后没有必要再次迭代你的两个数组。你可以更简单地构建它们,如
public static boolean intersection() {
int[] one = { 1, 2 };
int[] two = { 1, 3 };
for (int i = 0; i < one.length; i++) {
for (int j = 0; j < two.length; j++) {
if (one[i] == two[j]) {
return true;
}
}
}
return false;
}
答案 1 :(得分:2)
如果你想知道l是否属实,你可以:
if(l == true)
如果你想说l的值为真,你可以:
(l = true)
我将您的代码修改为:
public class ArrayIntersect {
public static void main(String[] args)
{
main();
}
public static void main()
{
boolean intersect = intersection(); // intersect returns true/false
if(intersect)
{
System.out.println("There are matching variables in the arrays!");
}
else
System.out.println("There are no matching variables.");
}
public static boolean intersection()
{
int[] one = new int[2];
int[] two = new int[2];
one[0] = 1;
one[1] = 2;
two[0] = 1;
two[1] = 3;
for(int i = 0; i < one.length; i++)
{
for(int j = 0; j < two.length; j++)
{
if(one[i] == two[j])
{
return true;
}
}
}
for(int j = 0; j < two.length; j++)
{
for( int i = 0; i < one.length; i++)
{
if(two[j] == one[i])
{
return true;
}
}
}
return false;
}
}
请注意,如果您想知道2组是否相交,有更有效的方法可以做到这一点。快乐的编码!
答案 2 :(得分:0)
如果要查找两个循环结果的交集,请不要返回for循环内部。与当前情况一样,当数组1和2在0位置相等时,您将不在该方法中。要解决此问题,请在标志变量中保存值,创建一个方法并获得总和o / p