1重写一个方法,我写的代码
public class ArrayTest3
{
public static boolean t(int[] a, int[] b)
{
if(a.length == b.length)
{
for(int i = 0; i < a.length; i++)
{
boolean result = a[i] == b[i]?true:false;
return result;
}
}
else
{
return false;
}
}public static void main(String[] args)
{
int[] a = {1, 2, 3};
int[] b = {1, 2, 3};
t(a, b);
System.out.println(a.equals(b));
}
}
编译都不能通过,我百思不得其解,为什么?
我知道正确的是
import java.util.Arrays;public class ArrayEqualsTest
{
// compare the content of two arrays
public static boolean isEquals(int[] a, int[] b)
{
if(a == null || b == null)
{
return false;
} if(a.length != b.length)
{
return false;
}
for(int i = 0; i < a.length; i++)
{
if(a[i] != b[i])
{
return false;
}
} return true;
}
public static void main(String[] args)
{
int[] a = {1, 2, 3};
int[] b = {1, 2, 3}; System.out.println(isEquals(a, b));
System.out.println("----------"); System.out.println(Arrays.equals(a, b));
}
}
这个我能看懂,但我觉得这样排除法可以,那可不可以不用这种排除法,我以上的代码时错误的,错在哪?正确的是怎么样的代码?
2
int[][][] a = new int[2][3][4];
System.out.println(a[0] instanceof int[][]);
System.out.println(a[0][0] instanceof int[]);
我看懵了,这a[0]不是表示这个三维数组的第一行吗?怎么一下子变成一个二维数组的实例了?
下面一行,a[0][0]不是这个三维数组的第一行第一列吗?怎么一下子变成一个数组的实例了?
问题很琐碎,百度不到,望高手解答,谢谢!
public class ArrayTest3
{
public static boolean t(int[] a, int[] b)
{
if(a.length == b.length)
{
for(int i = 0; i < a.length; i++)
{
boolean result = a[i] == b[i]?true:false;
return result;
}
}
else
{
return false;
}
}public static void main(String[] args)
{
int[] a = {1, 2, 3};
int[] b = {1, 2, 3};
t(a, b);
System.out.println(a.equals(b));
}
}
编译都不能通过,我百思不得其解,为什么?
我知道正确的是
import java.util.Arrays;public class ArrayEqualsTest
{
// compare the content of two arrays
public static boolean isEquals(int[] a, int[] b)
{
if(a == null || b == null)
{
return false;
} if(a.length != b.length)
{
return false;
}
for(int i = 0; i < a.length; i++)
{
if(a[i] != b[i])
{
return false;
}
} return true;
}
public static void main(String[] args)
{
int[] a = {1, 2, 3};
int[] b = {1, 2, 3}; System.out.println(isEquals(a, b));
System.out.println("----------"); System.out.println(Arrays.equals(a, b));
}
}
这个我能看懂,但我觉得这样排除法可以,那可不可以不用这种排除法,我以上的代码时错误的,错在哪?正确的是怎么样的代码?
2
int[][][] a = new int[2][3][4];
System.out.println(a[0] instanceof int[][]);
System.out.println(a[0][0] instanceof int[]);
我看懵了,这a[0]不是表示这个三维数组的第一行吗?怎么一下子变成一个二维数组的实例了?
下面一行,a[0][0]不是这个三维数组的第一行第一列吗?怎么一下子变成一个数组的实例了?
问题很琐碎,百度不到,望高手解答,谢谢!
—— 这个主要问题是你t(int[] a, int[] b)函数中有遗漏return的分支,所以编译器不让你通过;
—— 建议把else删除掉,直接写 return false;
这a[0]不是表示这个三维数组的第一行吗?怎么一下子变成一个二维数组的实例了?
—— a 是个三维数组,所以很自然的:
—— a[0] 是个二维数组,a[0][0] 是个一维数组,a[0][0][0] 是个int元素;
{
boolean result=false; //定义一变量。
if(a.length == b.length)
{
result=true;
for(int i = 0; i < a.length; i++)
{
//result = a[i] == b[i]?true:false;
if(a[i]!=b[i])
{
result=false;
break;
}
}
}
return result;
}
a[i] == b[i]?true:false 不行吗; t(a,b)是有返回值的,boolean b = t(a,b);...println(b)就好了吧,逻辑问题的话自己再好好想想
第二个问题:你先明白什么是实例再说吧
第二个问题,所谓P p = new P();就是有三层意思,第一是调用P的构造方法,第二是在内存里面生成一个空间,第三是把这个空间的地址赋给引用类型的变量p,可是数组int[][][] a = new int[2][3][4];并没有生成一个内存空间啊,三维数组不是三个引用类型吗?并没有占用内存空间啊?而instancsof是判断前者是否为后者的实例啊?这是这么回事,万望明示啊,大哥,不要打哑谜了,我本来就很痛苦,这问题解决不了,后面问题越积越多啊?
if (a.length == b.length) {
for (int i = 0; i < a.length; i++) {
boolean result = a[i] == b[i] ? true : false;
return result;
}
} else {
return false;
}
}t() 方法是有问题的:
1、循环当中只判断了一次就退出了,所以不妨改为:return a[0] == b[0];
2、当 a[] 和 b[] 长度都为 0 的情况下,方法没有可执行的返回语句,所以编译不通过。
if(a.length == b.length)
{
boolean result = false;
for(int i = 0; i < a.length; i++)
{ result = a[i] == b[i]?true:false;
return result;
}
return result; }
else
{ return false;
}
问题1:
public class ArrayTest3
{ static boolean result;
public static boolean t(int[] a, int[] b) {
if(a.length == b.length) {
for(int i = 0; i < a.length; i++) { result = (a[i] == b[i])?true:false;
}
return result; //你的返回值boolean 应该放在if中,而不是for里面(if会看不到)
}else { return false;
}
} public static void main(String[] args) {
int[] a = {1, 2, 3};
int[] b = {1, 2, 3};
System.out.println(t(a, b)); //这样答应应该是 你的需求.
System.out.println(a.equals(b));
}
}
问题2很容易理解哈,
一行肯定是一个队伍的实例吧,
一块肯定是一行的实例吧,
例如:
Object obj = new Object()
obj就是类Object的一个实例,也就是一个具体的对象