黑马程序员技术交流社区
标题:
排序的问题 求解
[打印本页]
作者:
lucy198921
时间:
2013-4-4 23:01
标题:
排序的问题 求解
本帖最后由 lucy198921 于 2013-4-6 18:52 编辑
数组的排序,如下所示,望指正.
package cn.itcast;
class ArrayDemo3{
private static Object end;
private static Object start;
public static void main(String[] args){
int[] arr={3,4,5,6,7,8};
revers(arr);
printArr(arr);
}
public static void revers(int[] arr){
for(int start=0;end==arr.length-1;start<end;start++,end--){
int temp=arr[(int) end];
arr[(int) end]=arr[(int)start];
arr[(int)start]= temp;
}
}
public static void printArr(int[] arr){
System.out.println("[ ");
for(int x=0;x<arr.length;x++){
if(x==arr.length-1)
System.out.println(arr[x]);
else
System.out.println(arr[x]+",");
}
System.out.println("] ");
}
}
作者:
刘吉庆
时间:
2013-4-4 23:16
楼主,首先有点不太明白你说的排序是什么,但看你的代码猜出是想把数组进行
返转
;
代码更改如下,你试试,看是不是你预想的结果:
class ArrayDemo3 {
private static Object end;// 此句不知道楼主有何用?
private static Object start;// 此句不知道楼主有何用?
public static void main(String[] args) {
int[] arr = { 3, 4, 5, 6, 7, 8 };
revers(arr);
printArr(arr);
}
public static void revers(int[] arr) {
for (int start = 0, end = arr.length - 1; start < end; start++, end--) {//此处原代码给end赋值写成了比较运算符"=="了
int temp = arr[(int) end];
arr[(int) end] = arr[(int) start];
arr[(int) start] = temp;
}
}
public static void printArr(int[] arr) {
System.out.println("[ ");
for (int x = 0; x < arr.length; x++) {
if (x == arr.length - 1)
System.out.println(arr[x]);
else
System.out.println(arr[x] + ",");
}
System.out.println("] ");
}
}
复制代码
作者:
王川
时间:
2013-4-4 23:20
public static void revers(int[] arr){
for(int start=0;end==arr.length-1;start<end;start++,end--){//此处括号中已经出现3个分号了,赋值符号写成了==号,而且你的代码写得冗余
int temp=arr[(int) end];
arr[(int) end]=arr[(int)start];
arr[(int)start]= temp;
}
}
复制代码
作者:
刘策
时间:
2013-4-4 23:37
我对楼主的(int)感到疑惑????
作者:
飞天小猪猪
时间:
2013-4-4 23:37
start和end作为Object对象,不能进行一元和二元运算。
for循环中可以定义局部变量int start,end,并且循环结束后就自动释放不占用内存,之前的定义在这个类的功能来看完全没有意义end的赋值语句是=,==是比较运算符,判断两边值是否相等返回的是boolean值。
class ArrayDemo3{
public static void main(String[] args){
int[] arr={3,4,5,6,7,8};
revers(arr);
printArr(arr);
}
public static void revers(int[] arr){
for(int start=0,end=arr.length-1;start<end;start++,end--){
int temp=arr[end];
arr[end]=arr[start];
arr[start]= temp;
}
}
public static void printArr(int[] arr){
System.out.print("[ ");
for(int x=0;x<arr.length;x++){
if(x==arr.length-1)
System.out.print(arr[x]);
else
System.out.print(arr[x]+",");
}
System.out.println("] ");
}
}
复制代码
作者:
刘印12
时间:
2013-4-5 02:11
楼主这个代码写的让我试非常的迷惑啊!object 的变量怎么能做基本运算呢!还有==这是比较 返回的是boolean;而不是赋值;你可以再for循环中定义int start和int end
并把arr.length-1的值赋值给end,还有出现了语法错误 intstart=0后面要换成,号;你把for循环的代码换成下面试试就可以了
public static void revers(int[] arr) {
for (int start = 0, end = arr.length - 1; start < end; start++, end--) {
int temp = arr[(int) end];
arr[(int) end] = arr[(int) start];
arr[(int) start] = temp;
}
}
作者:
王梦南
时间:
2013-4-6 13:34
本帖最后由 王梦南 于 2013-4-6 13:44 编辑
按照我的推测,楼主是想要将数组逆序打出来吧?
我先来说说我的思路:
要逆序输出数组,需要写两个方法,即楼主所写的revers和printArr
而revers方法也只是将数组循环,循环内部在更改顺序就好了。
即:
public static void revers(int[] arr){
int count = arr.length/2;
for(int i = 0;i<=count;i++){
if(i<count){
int temp = arr[i];
arr[i]= arr[arr.length-i-1];
arr[arr.length-i-1] = temp;
}
}
}
复制代码
感觉楼主有些滥用static了,而for循环的条件也是让人眼晕,for循环的条件主要是控制循环次数的。楼主应该先考虑清楚怎么换数组位置。先不考虑数组的变化,把传进来的数组写死,再来写方法就容易了。
作者:
陈丽莉
时间:
2013-4-6 18:27
60的技术分~ 我不说,你也知道我要回复什么了吧~ ^_^
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2