Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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_Arrays_Boolean - Fatal编程技术网

Java 如何比较两个数组之间的元素?

Java 如何比较两个数组之间的元素?,java,arrays,boolean,Java,Arrays,Boolean,我的程序有一个布尔数组,在比较两个数组之间的元素时返回true,即使它们的值不相等。如何更正compArray方法,使其仅在元素彼此相等时返回true public静态布尔compArray(double[]a,double[]b,int n){ for(int i=0;i

我的程序有一个布尔数组,在比较两个数组之间的元素时返回true,即使它们的值不相等。如何更正compArray方法,使其仅在元素彼此相等时返回true

public静态布尔compArray(double[]a,double[]b,int n){
for(int i=0;i
publicstaticvoidmain(字符串[]args){
double[]a=新的double[5];
double[]b=新的double[5];
扫描仪sc=新的扫描仪(System.in);
System.out.println(“输入值的数量:”);
int n=sc.nextInt();
对于(int i=0;i
如果只想比较数组中的两个元素,不需要函数。您正在传入
n
,但您可以检查
a[n]==b[n]
。我假设你想要的是一个比较整个数组的函数

当第一个元素相等时,不是返回
true
,而是尝试在结尾返回
false
,而是扫描整个数组以查找不相等的元素。一旦找到不相等的一对,就知道数组不相等,可以返回
false
。如果所有元素都不相等,则所有元素都相等,您可以返回
true

公共静态布尔比较数组(双[]a,双[]b)
{
for(int i=0;i
您可能需要研究
break
return
之间的区别

您可以做的另一件事是将长度检查移出循环,如下所示:

公共静态布尔比较数组(双[]a,双[]b)
{
//如果长度不相等,立即退出
如果(a.长度!=b.长度)
{
返回false;
}
//找到不相等的对后,循环并退出
for(int i=0;i
这使得代码更具可读性,并且不需要在每次循环迭代时检查长度条件——只需在函数开始时检查一次。

您将传递“n”作为要比较的索引,而应该传递“i”。由于主函数中有for循环,因此也可以简化该方法:

public static boolean compArray (double[] a, double[] b, int i)
  {
    if(a[i] == b[i]){
      return true;
    }
    return false;
  }
大体上

for (int i=0; i < n; i++){
      if (compArray(a, b, i))
for(int i=0;i
样本输入: 2. 1. 1. 3. 四,


示例输出:A 1.0 B 1.0 true,B 3.0 B 4.0 false

以下是如何比较两个双数组是否相等:

public静态布尔compArray(double[]a,double[]b,int n){
//如果数组的长度不相同,那么它们就不相等
如果(a.长度!=b.长度){
返回false;
}
for(int i=0;i
不要重新发明轮子。有一个库函数:

public static boolean compArray(double[] a, double[] b, int n) {
     return Arrays.equals(a, 0, n, b, 0, n);
}

现在请参见

,因为在
for
循环中有一个
return
语句,所以第一次执行
return
时,整个函数将结束。这意味着如果数组中的第一个元素相等,函数将立即返回
true