例如:输入: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
以上只是举例一些写法,如果您有更好的写法,欢迎评论补充!!!