键盘输入一段字符串(数字),然后按从小到大的顺序进行排序输出

例如:输入: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	

以上只是举例一些写法,如果您有更好的写法,欢迎评论补充!!!

猜你喜欢

转载自blog.csdn.net/weixin_44563573/article/details/103464609
今日推荐