A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 胡高德 中级黑马   /  2012-12-17 15:39  /  1610 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 胡高德 于 2012-12-17 15:50 编辑

/*
对给定数组进行排序。
{5,7,14,17,2,8,9}

*/
import java.util.*;
class ArrayDemo3
{
public static void main (String []args)
{
  int[] arr = {5,1,6,4,2,8,9};
  //排序前;
  printArray(arr);
  //排序
  selectSort(arr);
  
  //排序后:
  printArray(arr);
}

public static void selectSort(int [] arr)
{
  for (int x=0;x<arr.length-1;x++)
  {
   for (int y =x+1;y<arr.length;y++)
   {
    if (arr[x]>arr[y])
    {
    int temp = arr[x];
    arr[x] = arr[y];
    temp = arr [y];
    }
   {
  }
}

public static void printArray(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.println(arr[x]+"]");
  }  
}

}
/*
提示的错误:
ArrayDemo3.java:41: 非法的表达式开始
        public static void printArray(int[] arr)
        ^
ArrayDemo3.java:41: 非法的表达式开始
        public static void printArray(int[] arr)
               ^
ArrayDemo3.java:41: 需要 ';'
        public static void printArray(int[] arr)
                     ^
ArrayDemo3.java:41: 需要 ".class"
        public static void printArray(int[] arr)
                                            ^
ArrayDemo3.java:41: 需要 ';'
        public static void printArray(int[] arr)
                                               ^
ArrayDemo3.java:54: 进行语法解析时已到达文件结尾
}
^

*/

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

4 个回复

正序浏览
问题是括号写反,改正完毕代码比较混乱,如果用到eclipse使用快捷键ctrl+shift+F整理
public class ArrayDemo {

        /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                int[] arr = { 5, 1, 6, 4, 2, 8, 9 };
                // 排序前;
                printArray(arr);
                // 排序
                selectSort(arr);

                // 排序后:
                printArray(arr);
        }

        public static void selectSort(int[] arr) {

                for (int x = 0; x < arr.length - 1; x++) {
                        for (int y = x + 1; y < arr.length; y++) {
                                if (arr[x] > arr[y]) {
                                        int temp = arr[x];
                                        arr[x] = arr[y];
                                        temp = arr[y];
                                }
                        }// 括号写反
                }
        }

        public static void printArray(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.println(arr[x] + "]");
                }
        }
}

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
你这句有问题啊
  int temp = arr[x];
    arr[x] = arr[y];
    temp = arr [y];
应该是
int temp = arr[x];
    arr[x] = arr[y];
    arr[y] = temp;
回复 使用道具 举报
本帖最后由 白良锦 于 2012-12-17 15:56 编辑
  1. /*
  2. 问题出在右括号误打为左括号:如下
  3. */
  4. public static void selectSort(int [] arr)
  5. {
  6.    for (int x=0;x<arr.length-1;x++)
  7.    {
  8.     for (int y =x+1;y<arr.length;y++)
  9.     {
  10.      if (arr[x]>arr[y])
  11.      {
  12.      int temp = arr[x];
  13.      arr[x] = arr[y];
  14.      temp = arr [y];
  15.      }
  16.     {//此处括号应改为右括号
  17.    }
  18. }
复制代码
  1. <p>/*
  2. 改正后的代码:建议楼主以后编写代码注意层次性,出了问题后方便查找解决。
  3. */
  4. /*
  5. 对给定数组进行排序。
  6. {5,7,14,17,2,8,9}

  7. */
  8. import java.util.*;

  9. class ArrayDemo3
  10. {
  11.         public static void main (String []args)
  12.         {
  13.                 int[] arr = {5,1,6,4,2,8,9};
  14.                 //排序前;
  15.                 printArray(arr);
  16.                 //排序
  17.                 selectSort(arr);

  18.                 //排序后:
  19.                 printArray(arr);
  20.         }

  21.         public static void selectSort(int [] arr)
  22.         {
  23.                 for (int x=0;x<arr.length-1;x++)
  24.                 {
  25.                         for (int y =x+1;y<arr.length;y++)
  26.                         {
  27.                                 if (arr[x]>arr[y])
  28.                                 {
  29.                                         int temp = arr[x];
  30.                                         arr[x] = arr[y];
  31.                                         temp = arr [y];
  32.                                 }
  33.                         }//原程序在此处出的问题
  34.                 }
  35.         }

  36.          public static void printArray(int[] arr)
  37.          {
  38.            System.out.print("[");
  39.            for(int x=0; x<arr.length; x++)
  40.            {
  41.                 if(x!=arr.length-1)
  42.                  System.out.print(arr[x]+", ");
  43.                 else
  44.                  System.out.println(arr[x]+"]");
  45.            }  
  46.          }

  47. }</p><p> </p><p>/*</p><p>运行结果:</p><p>[5, 1, 6, 4, 2, 8, 9]
  48. [1, 1, 2, 2, 2, 8, 9]</p><p>*/</p>
复制代码

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
int temp = arr[x];
    arr[x] = arr[y];
    temp = arr [y];
    }
   {
  }
}

这地方你的大括号写错了。。。你改一下,
我运行了没有错误啊

1.png (2.66 KB, 下载次数: 25)

1.png

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马