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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© P神 中级黑马   /  2016-4-2 08:18  /  982 人查看  /  10 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

编写一个类,其中包含两个排序的方法sort(),参数不同,当键盘录入的是一串整数,就按照从小到大的顺序输出,
如果键盘录入的是一个字符串,就将字符串反序输出

10 个回复

正序浏览
学习了         
回复 使用道具 举报
z332406259 发表于 2016-4-2 10:07
楼上大大的处理方法是可以的.但是在下比较喜欢钻牛角尖.如果不通过2句提示语句输入,而是只有一个提示,让 ...
  1. import java.util.Arrays;
  2. import java.util.Scanner;

  3. public class Demo {

  4.         /**
  5.          * @param args
  6.          */
  7.         public static void main(String[] args) {

  8.                 Scanner in = new Scanner(System.in); // Scanner类
  9.                 String str = null;
  10.                 while (true) {
  11.                         try{
  12.                                 System.out.println("输入字符串:");
  13.                                 str = in.next();
  14.                                 int digit = Integer.parseInt(str);
  15.                                 System.out.println("调用函数输出:" + sort(digit));
  16.                         }catch (Exception e) {
  17.                                 System.out.println("抛出了异常,不是纯数字,调用函数输出:" + sort(str));
  18.                         }
  19.                 }
  20.         }

  21.         public static String sort(String str) {
  22.                 // 字符串倒叙输出
  23.                 return new StringBuilder(str).reverse().toString();
  24.         }

  25.         public static String sort(int digit) {
  26.                 // 整数排序
  27.                 String str = digit + "";
  28.                 char[] chars = str.toCharArray();
  29.                 Arrays.sort(chars);
  30.                 StringBuffer sb = new StringBuffer();
  31.                 for(int i=0;i<chars.length;i++){
  32.                         sb.append(chars[i]);
  33.                 }
  34.                 return sb.toString();
  35.         }
  36. }
  37. 运行:
  38. 输入字符串:
  39. 123wd
  40. 抛出了异常,不是纯数字,调用函数输出:dw321
  41. 输入字符串:
  42. 23435
  43. 调用函数输出:23345
  44. 输入字符串:
复制代码
回复 使用道具 举报
需要先判断是整数还是字符串的
  1. import java.math.BigInteger;
  2. import java.util.Arrays;
  3. import java.util.Scanner;

  4. public class Test_ForSort {
  5.         public static void main(String[] args) {
  6.                 /*
  7.                  * 编写一个类,其中包含两个排序的方法sort(),参数不同,当键盘录入的是一串整数,就按照从小到大的顺序输出,
  8.                  * 如果键盘录入的是一个字符串,就将字符串反序输出
  9.                  * 分析:
  10.                  * 1.键盘录入,判断是否是整数或者字符串
  11.                  * 2.定义两个方法,参数不同方法名相同,方法重载sort()
  12.                  */
  13.                 Scanner sc = new Scanner(System.in);
  14.                 System.out.println("请输入整数或字符串:");
  15.                 //无论是整数还是字符串,都是先当做字符串
  16.                 String line = sc.nextLine();
  17.                 //用捕抓异常的方法来判断是否是整数
  18.                 try {
  19.                         //整数的范围可能会超出int范围,所以用BigInteger接收
  20.                         BigInteger bi = new BigInteger(line);
  21.                         sort(bi);
  22.                 } catch (Exception e) {
  23.                         //不是整数的都当做字符串
  24.                         sort(line);
  25.                 }
  26.         }
  27.         private static void sort(BigInteger bi) {
  28.                 char[] arr = bi.toString().toCharArray();
  29.                 //数组的排序方法
  30.                 Arrays.sort(arr);
  31.                 //还有另一种,冒泡排序法,当然也可以选择排序法
  32.                 /*for (int i = 0; i < arr.length; i++) {
  33.                         for (int j = 0; j < arr.length-i; j++) {
  34.                                 if (arr[j] > arr[j+1]) {
  35.                                         char c = arr[j];
  36.                                         arr[j] = arr[j+1];
  37.                                         arr[j+1] = c;
  38.                                 }
  39.                         }
  40.                 }*/
  41.                 //遍历数组,输出每个元素
  42.                 for (char c : arr) {
  43.                         System.out.print(c);
  44.                 }
  45.                 System.out.println();
  46.         }
  47.        
  48.         private static void sort(String line) {
  49.                 //转换为StringBuilder
  50.                 StringBuilder sb = new StringBuilder(line);
  51.                 //反转方法
  52.                 sb.reverse();
  53.                 //输出
  54.                 System.out.println(sb);
  55.         }
  56. }
复制代码
回复 使用道具 举报 1 0
P神 中级黑马 2016-4-2 11:05:59
7#
我也觉得程序应该能自己判断是否是数字
回复 使用道具 举报
用Scanner接收字符串时一定要进行判断,判断如果字符串是纯数字进行一一匹配
回复 使用道具 举报
fmi110 发表于 2016-4-2 09:48
方法重载,定义两个同名的sort()函数,参数类型不一样,函数调用时会自动根据参数调用对应的参数 ...

楼上大大的处理方法是可以的.但是在下比较喜欢钻牛角尖.如果不通过2句提示语句输入,而是只有一个提示,让你输入,系统自动判断你输入的是整数还是字符串,根据你的输入调用不同的方法,这样是不是更符合题意呢?
可不可以将键盘录入的用字符串接收,然后对字符串的元素进行遍历包装,然后捕获异常,若存在非数字元素必然异常,此时只做字符串反转的操作.而若没有异常则对数字字符串进行排序输出操作.
在下新人一枚,请大大不吝赐教.

点评

非常好的逻辑!!这样连正则的判断都可以省略, try{ sort(Integer.parseInt(str)); }catch(Excepction e){ sort(str); }  发表于 2016-4-2 16:42
回复 使用道具 举报 1 0
楼上大大的处理方法是可以的.但是在下比较喜欢钻牛角尖.如果不通过2句提示语句输入,而是只有一个提示,让你输入,系统自动判断你输入的是整数还是字符串,根据你的输入调用不同的方法,这样是不是更符合题意呢?
回复 使用道具 举报
方法重载,定义两个同名的sort()函数,参数类型不一样,函数调用时会自动根据参数调用对应的参数
  1. import java.util.Arrays;
  2. import java.util.Scanner;

  3. public class Demo {

  4.         /**
  5.          * @param args
  6.          */
  7.         public static void main(String[] args) {

  8.                 Scanner in = new Scanner(System.in); // Scanner类
  9.                 while (true) {

  10.                         System.out.println("输入整数:");
  11.                         int digit = in.nextInt();
  12.                         System.out.println("调用函数输出:" + sort(digit));

  13.                         System.out.println("输入字符串:");
  14.                         String str = in.next();
  15.                         System.out.println("调用函数输出:" + sort(str));

  16.                 }
  17.         }

  18.         public static String sort(String str) {
  19.                 // 字符串倒叙输出
  20.                 return new StringBuilder(str).reverse().toString();
  21.         }

  22.         public static String sort(int digit) {
  23.                 // 整数排序
  24.                 String str = digit + "";
  25.                 char[] chars = str.toCharArray();
  26.                 Arrays.sort(chars);
  27.                 StringBuffer sb = new StringBuffer();
  28.                 for(int i=0;i<chars.length;i++){
  29.                         sb.append(chars[i]);
  30.                 }
  31.                 return sb.toString();
  32.         }
  33. }
  34. 运行结果:
  35. 输入整数:
  36. 231
  37. 调用函数输出:123
  38. 输入字符串:
  39. qasd
  40. 调用函数输出:dsaq
  41. 输入整数:
  42. 777423
  43. 调用函数输出:234777
  44. 输入字符串:
  45. itheima.com
  46. 调用函数输出:moc.amiehti
复制代码
回复 使用道具 举报
方法重载啊,sort(int i);sort(String s);分别实现方法.然后在main方法中,用Scanner接收字符串,判断如果字符串是纯数字,则调用sort(Integer.parseInt(s));如果非则调用sort(s);
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马