赞
踩
例如:输入:8245061397,则输出:0123456789
参考代码1:
package com.gx.demo; import java.util.Arrays; import java.util.Scanner; public class Test1 { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println("请输入正整数:"); String temp=in.nextLine(); int len = temp.length(); int[] arr = new int[len]; for(int i=0;i<len;i++) { arr[i]=Integer.parseInt(temp.substring(0,1)); temp=temp.substring(1); } Arrays.sort(arr); for(int j=0;j<len;j++) { System.out.print(arr[j]); } } }
输出结果:
请输入正整数:
8245061397
0123456789
注:这个写法只能支持正整数的写法,不支持非正整数和英文等输入。
参考代码2:
package com.gx.demo; import java.util.Arrays; import java.util.Scanner; public class Test2 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入字符:"); String nums = null; String string = null; nums = sc.nextLine(); // 调用方法,并得到返回执行结果, string = stringFrontNum(nums); System.out.println(string); } // 将数字和字母分离的方法 private static String stringFrontNum(String nums) { String charString = ""; String numString = ""; String charStr = ""; for (int i = 0; i < nums.length(); i++) { // 得到数字字符串 if (nums.charAt(i) >= '0' && nums.charAt(i) <= '9') numString += nums.charAt(i); // 得到小写字母字符串 if (nums.charAt(i) >= 'a' && nums.charAt(i) <= 'z') charString += nums.charAt(i); // 得到大写字母字符串 if (nums.charAt(i) >= 'A' && nums.charAt(i) <= 'Z') charStr += nums.charAt(i); } // 调用对数字排序的方法 numString = sortNums(numString); // 调用对字母排序的方法 charString = sortString(charString); // 调用对字母排序的方法 charStr = sortString(charStr); return numString + charString + charStr; } /* * 对数字字符串进行操作 1.将数字字符串转成char,再转成String,然后Integer 2.对数组进行排序 3.将排好序的数组转成字符串 */ public static String sortNums(String numString) { int[] is = new int[numString.length()]; /* * 字符串中的数据一定要是数字,否则会出现异常 numString.charAt(i);得到字符串i位置的值, * String.valueOf(); 转换char类型为字符串 Integer.parseInt();由String转换成Integer */ for (int i = 0; i < is.length; i++) { is[i] = Integer.parseInt(String.valueOf(numString.charAt(i))); } Arrays.sort(is); StringBuffer stringBuffer = new StringBuffer(); for (int i = 0; i < is.length; i++) { stringBuffer = stringBuffer.append(is[i]); } numString = stringBuffer.toString(); return numString; } /* * 对字符串进行操作 1.将字符串转成数组 2.对数组进行排序 3.将排好序的数组转成字符串 */ public static String sortString(String charString) { char[] chs = charString.toCharArray(); Arrays.sort(chs); charString = new String(chs); return charString; } }
输出结果:
例1:
请输入字符:
8245061397
0123456789
例2:
请输入字符:
djhfakjsjfha
aadffhhjjjks
例3:
请输入字符:
DFSKJGAKLB
ABDFGJKKLS
例4:
请输入字符:
1465132afdsagfSGFDGFDSG
1123456aadffgsDDFFGGGSS
美中不足:当输入数字和大小写英文时,默认按代码return numString + charString + charStr;
的返回拼接顺序排序,即先排序数字,接着小写英文,再排序大写英文。
建议不要这样混淆输入,当纯输入一种就好。
【拓展:】
参考代码3:
package com.gx.demo; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.Scanner; public class Test3 { public static void main(String args[]) throws Exception { ArrayList<String> list = new ArrayList<String>(); Scanner sc = new Scanner(System.in); System.out.println("请开始输入ArrayList中的第一个元素:(按enter键继续)"); while (sc.hasNext()) { list.add(sc.nextLine()); System.out.println("请输入下一个元素:(按Ctrl + Z键结束)"); } System.out.println("列表为:" + list); System.out.println("列表中的元素数量为: " + list.size()); // 输出包含元素个数 // 遍历list中元素,并输出每个元素的长度 for (Iterator<String> i = list.iterator(); i.hasNext();) { String s = i.next(); System.out.println(s + " 的长度为:" + s.length()); } Collections.sort(list); // 按照元素的自然排序,美中不足的是当输入的是一个两位数以上的数,默认只拿第一位来比较 System.out.println("排序:" + list); } }
输出结果:
请开始输入ArrayList中的第一个元素:(按enter键继续) 21 请输入下一个元素:(按Ctrl + Z键结束) 4 请输入下一个元素:(按Ctrl + Z键结束) 6 请输入下一个元素:(按Ctrl + Z键结束) 1 请输入下一个元素:(按Ctrl + Z键结束) 9 请输入下一个元素:(按Ctrl + Z键结束) 列表为:[21, 4, 6, 1, 9] 列表中的元素数量为: 5 21 的长度为:2 4 的长度为:1 6 的长度为:1 1 的长度为:1 9 的长度为:1 排序:[1, 21, 4, 6, 9]
美中不足的是当输入的是一个两位数以上的数,默认只拿第一位来比较。
参考代码4:
package com.gx.demo; import java.util.Scanner; public class Test4 { public static void main(String[] args) { int[] array = new int[5]; Scanner scanner = new Scanner(System.in); for (int i = 0; i < array.length; i++) { System.out.println("请输入第" + (i + 1) + "个整数"); array[i] = scanner.nextInt(); } for (int i = 0; i < array.length - 1; i++) { for (int y = 0; y < array.length - 1 - i; y++) { if (array[y] < array[y + 1]) { int x; x = array[y]; array[y] = array[y + 1]; array[y + 1] = x; } } } System.out.println("排序后"); paixu(array); } public static void paixu(int[] array) { for (int i = 0; i < array.length; i++) { System.out.print(array[i] + "\t"); } } }
输出结果:
请输入第1个整数
9
请输入第2个整数
20
请输入第3个整数
3
请输入第4个整数
7
请输入第5个整数
30
排序后
30 20 9 7 3
以上只是举例一些写法,如果您有更好的写法,欢迎评论补充!!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。