黑马程序员技术交流社区
标题:
大家帮忙看下我这样写有什么错
[打印本页]
作者:
陈永波
时间:
2012-6-23 14:02
标题:
大家帮忙看下我这样写有什么错
本帖最后由 陈永波 于 2012-6-23 14:28 编辑
题目是将一个数组中素有元素反转、
public class Test{
public static void main(String[] args) {
int[] arr = {1,2,3,4,5,6,7,8}
reverse(arr);
}
public static void reverse(int[] arr){
int temp;
for(int i = 0; i < arr.length; i++){
temp = arr
;
arr
= arr[arr.length-1-i];
arr[arr.length-1-i] = temp;
System.out.println(arr
);
}
}
}
输出结果是87655678.求解答。
正确结果应该是 87654321
作者:
闾丘日月
时间:
2012-6-23 14:15
首先,反转数组,你应该返回一个数组,不是在函数内部做输出。
其次,分析你的程序,i = 0 a[] = {8,2,3,4,5,6,7,1} 输出a[0] = 8
i= 1 a[] = {8,7,3,4,5,6,2,1} 输出 a[1]=7
i= 2 a[] = {8,7,6,4,5,3,2,1} 输出a[2]=6
i= 3 a[] = {8,7,6,5,4,3,2,1} 输出a[3]=5
i= 4 a[] = {8,7,6,4,5,3,2,1} 输出a[4]=5
i= 5 a[] = {8,7,3,4,5,6,2,1} 输出a[5]=6
后面的我就不给你列出来了,自己分析吧,至于如何修改
你反转的时候遍历只需要到lengh/2即可,因为如果你都换了。那么数组里面的元素等于没换
作者:
王明明
时间:
2012-6-23 14:16
本帖最后由 王明明 于 2012-6-23 14:40 编辑
public class Testc{
public static void main(String[] args) {
int[] arr = {1,2,3,4,5,6,7,8};
reverse(arr);
}
public static void reverse(int[] arr){
int temp;
for(int i = 0; i < arr.length/2; i++){ //这里 你看看你I的值交换后 I=4的时候 又开始把8 7 6 5换回去了 除2 就可以了
temp = arr
;
arr
= arr[arr.length-1-i];
arr[arr.length-1-i] = temp;
}
for(int i = 0; i < arr.length; i++){
System.out.println(arr
);
}
}
}
收尾同时都减一 也可以
public class Testc{
public static void main(String[] args) {
int[] arr = {1,2,3,4,5,6,7,8};
reverse(arr);
}
public static void reverse(int[] arr){
int temp;
for(int i = 0,y=arr.length-1;i < y; i++,y--)
{
temp = arr
;
arr
= arr[y];
arr[y] = temp;
}
for(int i = 0; i < arr.length; i++){
System.out.println(arr
);
}
}
}
作者:
王杰
时间:
2012-6-23 14:16
public class Test{
public static void main(String[] args) {
int[] arr = {1,2,3,4,5,6,7,8};
reverse(arr);
for (int i= 0 ;i<arr.length ;i++ )
{
if(i!=(arr.length-1))
System.out.print(arr[i]+",");
else
System.out.println(arr[i]);
}
}
public static void reverse(int[] arr){
int temp;
for(int i = 0; i < arr.length/2 ; i++){
temp = arr[i];
arr[i] = arr[arr.length-1-i];
arr[arr.length-1-i] = temp;
}
}
}
//按照你的思路,你不用全部遍历,遍历一半就可以了。
复制代码
作者:
张华廷
时间:
2012-6-23 14:24
public class Text{
public static void main(String[] args) {
int[] arr = {1,2,3,4,5,6,7,8};
reverse(arr);
}
public static void reverse(int[] arr){
int temp;
for(int i = 0; i < arr.length; i++){
temp = arr[i];
arr[i] = arr[arr.length-1-i];
arr[arr.length-1-i] = temp;
}
for(int i = 0; i < arr.length; i++)
{
System.out.print(arr[i]);//输出在方法外
}
}
}
结果:12345678
作者:
李伟
时间:
2012-6-23 14:32
public class Test
{
public static void main(String[] args)
{
int[] arr = {1,2,3,4,5,6,7,8}
reverse(arr);
}
public static void reverse(int[] arr)
{
int temp;
for(int start= 0,end=arr.length-1; start< end; start++,end--)
{
temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
System.out.println(arr[i]);
}
}
}
作者:
李伟
时间:
2012-6-23 14:36
public class Test
{
public static void main(String[] args)
{
int[] arr = {1,2,3,4,5,6,7,8}
reverse(arr);
}
public static void reverse(int[] arr)
{
int temp;
for(int start= 0,end=arr.length-1; start< end; start++,end--)//
{
temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
}
System.out.println(arr);
}
}
作者:
王晓新
时间:
2012-6-23 14:36
public class Test{
public static void main(String[] args)
{
int[] arr = {1,2,3,4,5,6,7,8};
reverse(arr);
for(int i=0;i<arr.length;i++)//这里输出不能在for循环里面,因为在for循环里面只会输出4个值。
System.out.println(arr[i]);
}
public static void reverse(int[] arr){
int temp;
for(int i = 0; i < arr.length/2; i++){//交换的时候只需要交换到一半就行了,如果这里写length,就会还原了
temp = arr[i];
arr[i] = arr[arr.length-1-i];
arr[arr.length-1-i] = temp;
}
}
}
复制代码
作者:
任传敏
时间:
2012-6-23 14:41
哥们,程序中有很多错误呢,我都怀疑你是怎么运行出结果的,帮你改了一下,看看你错在哪里:
public class Test {
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5, 6, 7, 8};
reverse(arr);
}
public static void reverse(int[] arr) {
int temp;
for (int i = 0; i < arr.length / 2; i++) {
temp = arr[i];
arr[i] = arr[arr.length - 1 - i];
arr[arr.length - 1 - i] = temp;
}
for (int i : arr)
System.out.println(i);
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2