public class MaxArrayTest {
public static void main(String[] args) {
int[] list = {1,2,3,4,5};
reverse(list);
for(int i=0;i<list.length;i++){
System.out.print(list[i]+" ");
}
}
public static void reverse(int[] list){
int[] newlist = new int[list.length];
for(int i=0;i<list.length;i++){
newlist[i] = list[list.length-1-i];
list = newlist;
}
}
}
public static void main(String[] args) {
int[] list = {1,2,3,4,5};
reverse(list);
for(int i=0;i<list.length;i++){
System.out.print(list[i]+" ");
}
}
public static void reverse(int[] list){
int[] newlist = new int[list.length];
for(int i=0;i<list.length;i++){
newlist[i] = list[list.length-1-i];
list = newlist;
}
}
}
解决方案 »
- 关于引用变量做参数的问题
- 如何替换 title=abcd 为了 title="abcd"
- FrameListener
- 大家都用过hibernate吧,请教从网上看到某公司面试题,HIBERNATE在没有WEB的环境下如何解决中文乱码问题,指存入数据库时。
- 我如何用split区分多个空格
- 请问用JEditorPane做的浏览器中如何能识别JavaScript
- 编码转换的问题:从SJIS转换到JIS8,结果比原来多出6个byte
- 初学者提问?
- 从哪里能下载到mm.mysql?
- 用JAVA如何实现多个结点的无向图的遍历和最短路径算法。
- java jxl.jar如何打开一个现有的excel,修改后保存该excel?
- 一道算法题,需要想出合适的算法解决
int[] list = { 1, 2, 3, 4, 5 };
int[] reverse = reverse(list);
for (int i = 0; i < reverse.length; i++) {
System.out.print(reverse[i] + " ");
}
} public static int[] reverse(int[] list) {
int[] newlist = new int[list.length];
for (int i = 0; i < list.length; i++) {
newlist[i] = list[list.length - 1 - i];
}
return newlist;
}这样改就好了
int[] list = {1,2,3,4,5};
reverse(list); 这里传进去一个副本
for(int i=0;i<list.length;i++){ 这里的list 还是int[] list = {1,2,3,4,5};
System.out.print(list[i]+" ");
}
你在执行reverse方法时,将list传递进去,此时传递的是list的引用的副本,也就是将list的内存地址存入局部变量区中。
后面,你再list=newlist时,此时是将局部变量区中的list引用改成newlist,所以并不会对main方法里的list的引用产生更改。但是,你可以通过方法返回值来将局部变量区的list引用返回到main中,以下是示例: public static void main(String[] args) {
int[] list = { 1, 2, 3, 4, 5 };
list = reverse(list); //此处接收reverse返回的list引用,并且覆盖
for (int i = 0; i < list.length; i++) {
System.out.print(list[i] + " ");
}
} public static int[] reverse(int[] list) {
int[] newlist = new int[list.length];
for (int i = 0; i < list.length; i++) {
newlist[i] = list[list.length - 1 - i];
list = newlist; }
return list;//此处返回新的list引用
}
下面是修正的代码:public static void main(String[] args) {
int[] list = { 1, 2, 3, 4, 5 };
list = reverse(list); //此处接收reverse返回的list引用,并且覆盖
for (int i = 0; i < list.length; i++) {
System.out.print(list[i] + " ");
}
} public static int[] reverse(int[] list) {
int[] newlist = new int[list.length];
for (int i = 0; i < list.length; i++) {
newlist[i] = list[list.length - 1 - i];
//list = newlist; }
return newlist;//此处返回新的list引用
}
int[] list = {1,2,3,4,5};
reverse(list);
for(int i=0;i<list.length;i++){
System.out.print(list[i]+" ");
}
} public static void reverse(int[] list){
for (int i = 0; i < list.length/2; i++) {
int temp=0;
temp=list[i];
list[i]=list[list.length-i-1];
list[list.length-i-1]=temp;
}
}
}