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