public void addStudent(String student) {
String [] temp = new String[students.length * 2];
for(int i = 0; i < students.length; i++){
temp[i] = students[i];
}
students = temp;
students[numberOfStudents] = student;
numberOfStudents++;
}
Run Code Online (Sandbox Code Playgroud)
public String[] getStudents() {
String[] copyStudents = new String[students.length];
return copyStudents;
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试让方法getStudents返回我在addStudent方法中创建的数组的副本.我不知道该如何解决这个问题.
我想复制一个大数组的整数值,比如表格数组a到数组b.我找到了几种方法来做到这一点,包括:
int[] a = new int[]{1,2,3,4,5};
int[] b = new int[5];
System.arraycopy( a, 0, b, 0, a.length );
Run Code Online (Sandbox Code Playgroud)
和
int[] a = new int[]{1,2,3,4,5};
int[] b = (int[])a.clone();
Run Code Online (Sandbox Code Playgroud)
由于这是在移动设备上完成的,我希望能够最有效地完成.
请告诉我最好的方法.
我从网站上得到了这个编码问题.问题如下:
如果可以通过交换其中一个阵列中的至多一对元素从另一个阵列获得一个阵列,则称这两个阵列是相似的.
给定两个数组,检查它们是否相似.
例
对于A = [1,2,3]和B = [1,2,3],输出应该是相似的(A,B)=真.
数组相等,无需交换任何元素.
对于A = [1,2,3]和B = [2,1,3],输出应该是相似的(A,B)=真.
我们可以通过在B中交换2和1从A获得B.
对于A = [1,2,2]和B = [2,1,1],输出应该是相似的(A,B)=假.
在A或B中任何两个元素的任何交换都不会使A和B相等.
这是我给出的解决方案:
boolean areSimilar(int[] A, int[] B) {
if(A.length != B.length) return false;
int[] copyA = A, copyB = B;
Arrays.sort(copyA); Arrays.sort(copyB);
int countSwap = 0;
if(!Arrays.equals(copyA, copyB)) return false;
for(int i = 0; i < A.length; i++) {
if(A[i] != B[i]) countSwap++;
}
return (countSwap == 2 || countSwap == 0);
}
Run Code Online (Sandbox Code Playgroud)
此代码为以下数组提供了正确的结果:
答:[1,2,3]
B:[1,2,3]
答:[1,2,3]
B:[2,1,3]
答:[1,2,2] …
我正在用另一个'array2'实例化一个数组'array1',然后尝试修改'array2',这会改变'array1'.几个小时后,我意识到它可能是一个call-by或pass-by-ref/value错误.有人可以帮我解决这个问题并让我朝着正确的方向前进吗?
int[] src = {0,4,3,2,1};
int[] dest = src;
dest[0] = dest[0] + 2;
for (int node: dest) {
System.out.print(node + " ");
}
System.out.println("");
for (int node: src) {
System.out.print(node + " ");
}
Run Code Online (Sandbox Code Playgroud)
这会产生:
2 4 3 2 1
2 4 3 2 1
即源数组也被修改.提前致谢.