黑马程序员技术交流社区
标题:
请帮忙解决代码问题
[打印本页]
作者:
完美恋爱
时间:
2013-11-13 22:46
标题:
请帮忙解决代码问题
本帖最后由 完美恋爱 于 2013-11-13 22:50 编辑
题目:对一个数组中的元素进行反转
class Test4
{
public static void main(String[] args)
{
int[] arr = {34,16,23,99,50};
int x = arr.length-1;
System.out.print("{");
for(int i = 0; i < arr.length; i++,x--)
{
if(i != arr.length - 1)
{
int a = arr
;
arr
= arr[x];
arr[x] = a;
System.out.print(arr
+",");
}
else
System.out.println(arr
+"}");
}
}
}
请问我做的哪里有问题啊!为什么出来的结果会是{50,99,23,99,34}这个样子呢?
作者:
习嘻嘻
时间:
2013-11-13 23:15
你的for循环那里,循环的太多,只需要i<arr.length/2即可,按照你的你调换一遍过程是这样的
i=0 换位后数组为 50 16 23 99 34 取50
i=1 换位后数组为 50 99 23 16 34 取99
i=2 换位后数组为 50 99 23 16 34 取23
i=3 换位后数组为 50 16 23 99 34 取99
i=4 换位后数组为 50 16 23 99 34 取34
public class Test4 {
public static void main(String[] args) {
int[] arr = { 34, 16, 23, 99, 50 };
int x = arr.length - 1;
System.out.print("{");
for (int i = 0; i < arr.length/2; i++, x--) {
int a = arr[i];
arr[i] = arr[x];
arr[x] = a;
//
}
for(int i=0;i<arr.length;i++){
if(i==arr.length-1){
System.out.print(arr[i]+"}");
}
else{
System.out.print(arr[i]+",");
}
}
}
}
作者:
zuiaichiyu
时间:
2013-11-13 23:31
本帖最后由 zuiaichiyu 于 2013-11-13 23:40 编辑
你循环的次数没搞清楚,另外
for(int i = 0; i < arr.length; i++,x--)
{
if(i != arr.length - 1)
{
int a = arr;--------这里的arr是数组 应该改成arr[i]后面的也是
arr = arr[x];
arr[x] = a;
System.out.print(arr+",");
}
else
System.out.println(arr+"}");
}
复制代码
你把换位和打印放到同一个代码块中了,我觉得这样很容易混乱,照楼上说的把for循环的判断改成length/2也不会打出正确结果,我试过了,建议楼主分开写功能
//换位
for(int i = 0;i<arr.length/2;i++){
int temp = arr[i];
arr[i] = arr[arr.length-i-1];
arr[arr.length-i-1] = temp;
}
//打印
System.out.print("{");
for(int i = 0 ;i<arr.length;i++){
if(i!=arr.length-1){
System.out.print(arr[i]+",");
}else
System.out.println(arr[i]+"}");
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2