Java 如何对字母和数字进行排序

Java 如何对字母和数字进行排序,java,Java,在我的编码中,我得到了基于名称的排序输出。但若我使用相同的名称,那个么数组将保持不变。有没有办法,当名称相同时,数字将被排序?提前谢谢 公共类InsertionSort{ /*函数使用插入排序对数组进行排序*/ 无效排序(字符串str[]) { int n=str.length; 对于(int i=1;i=0&&key.compareTo(str[j])

在我的编码中,我得到了基于名称的排序输出。但若我使用相同的名称,那个么数组将保持不变。有没有办法,当名称相同时,数字将被排序?提前谢谢


公共类InsertionSort{
/*函数使用插入排序对数组进行排序*/
无效排序(字符串str[])
{ 
int n=str.length;
对于(int i=1;i=0&&key.compareTo(str[j])<0)
{ 
str[j+1]=str[j];
j=j-1;
} 
str[j+1]=键;
} 
} 
/*打印大小为n的数组的实用函数*/
静态void打印数组(字符串str[])
{ 
int n=str.length;

对于(int i=0;i您在代码中没有调用sort()方法。此外,您需要将sort()方法设置为静态,以便能够从main()方法调用


还有一种更精确的方法可以做到这一点,在和集合框架数据类型中添加字符串元素,并使用collections.sort()方法。

您有一个字符串数组,到目前为止还不错。什么不起作用?哪些“数字”你的意思是?你是指字符串中包含的数字吗?如果是这样,你显然必须拆分值,然后进行两步比较,否则这只是在字符串上进行的字典排序。我指的是名称后面的数字。例如ASIF44是的,我看到了。你必须先将字符串拆分为第1部分和第2部分,然后才能执行comparison,首先将第1部分作为字符串比较,然后将第2部分作为数字比较。下面是按字号边界拆分字符串的正则表达式:
string regex=”(?答案不是可能的重复……他必须将字符串分成两部分,以便按字符串比较对第一部分进行排序,按数字对第二部分进行排序compariosn@AKSW请您接受代码,执行并确认。@AKSW您确定吗?我认为字符串比较会考虑到这一点。还有Arrays.sort也会考虑到这一点。我不需要合作请确认我所知道的。字符串是按字典顺序排序的,它不会根据字符串中包含的数字部分按正确的顺序排序string@StephanHogenboom我肯定,是的。字典的顺序和数字的顺序是不同的,不是吗?4和15呢?首先是字符串,如果你比较普通数字呢?
  // Driver method 
            public static void main(String args[]) 
            {         
                 String[]  str ={"asif44","asif435"}; //2 elements

                 **sort(str);**

                printArray(str); 
            }