黑马程序员技术交流社区

标题: 学完今天的课程写的!请多指教! [打印本页]

作者: 小沈同学    时间: 2015-7-1 21:03
标题: 学完今天的课程写的!请多指教!
本帖最后由 小沈同学 于 2015-7-1 21:05 编辑
  1. /*  这个程序的功能是:在控制台输入一串字母,通过方法可以自动把输入的字符串从小到大排列好并打印出来。
  2. */
  3. import java.util.Scanner;//导包
  4. public class Strings {
  5.         public static void main(String[] args) {
  6.                 Scanner s = new Scanner(System.in);
  7.                 System.out.println("请输入一串字母:");
  8.                 String s1 = s.nextLine();//用变量S1记录用户输入的字母
  9.                 char[] arr = s1.toCharArray();//调用方法把字符串拆分成字符
  10.                 Strings(arr);//调用方法把拆分的字符从小到大排列
  11.                 System.out.println("从小到大排序为:"+String.valueOf(arr));//调用方法把拆分的字符重新组成字符串并打印出来!
  12.         }
  13.         public static void Strings(char[] arr){//这个方法用来把字符数组从小到大排列
  14.                 for (int x = 0; x < arr.length-1; x++) {//外循环根据数组长度决定循环次数,因为第一次遍历就把最后索引确定,所以-1.
  15.                         for (int y = 0; y < arr.length-1-x; y++) {//内循环把数组从索引0开始跟后一索引对比,-1因最后索引不用对比。
  16.                                 if (arr[y]>arr[y+1]) {//判断若前一索引如果比后一索引大就定义一个第三方变量,把前后两者对调。
  17.                                         char temp = arr[y];
  18.                                         arr[y] = arr[y+1];
  19.                                         arr[y+1] = temp;
  20.                                 }
  21.                         }
  22.                 }
  23.         }
  24. }
复制代码
学完今天的课程写的!请多指教!这个程序的功能是:在控制台输入一串字母,通过方法可以自动把输入的字符串从小到大排列好并打印出来。

作者: 453203489    时间: 2015-7-2 03:38
这个排序算法我觉得有2点不是很好。
作者: 453203489    时间: 2015-7-2 03:41
首先是在算法上, 你的排序算法应该是老师讲冒泡之后做的吧, 内层循环取多了。
然后是在实现上, 个人觉得 Strings 方法的主要功能是检查相邻的是否需要交换, 而交换这一操作应该交给另一个方法去做。

一点小小的建议。
作者: 小沈同学    时间: 2015-7-4 22:41
453203489 发表于 2015-7-2 03:41
首先是在算法上, 你的排序算法应该是老师讲冒泡之后做的吧, 内层循环取多了。
然后是在实现上, 个人觉得 ...

那请问内层循环怎样取才合理?这个是老师讲完后做的小测试,呵呵所以就没定义另外的方法了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2