Java 如何重新排列具有整数字符和符号的数组元素?
我有一个数组,形式为Java 如何重新排列具有整数字符和符号的数组元素?,java,arrays,Java,Arrays,我有一个数组,形式为 {1, a, D, 3, h, 2, C, Z, $, o, 5} 结果数组应为 {1, 3, 2, 5, a, h, o, D, C, Z, $} 其中,重新排列的数组应该首先有数字,然后是小写字母,最后是大写字母,最后是特殊字符,而不使用另一个数组。。怎么做 提前谢谢你 private static void arrangeArrayInOrder(List<Character> arr) { for (int i = 0; i <
{1, a, D, 3, h, 2, C, Z, $, o, 5}
结果数组应为
{1, 3, 2, 5, a, h, o, D, C, Z, $}
其中,重新排列的数组应该首先有数字,然后是小写字母,最后是大写字母,最后是特殊字符,而不使用另一个数组。。怎么做
提前谢谢你
private static void arrangeArrayInOrder(List<Character> arr) {
for (int i = 0; i < arr.size(); i++) {
if (arr.get(i) >= '0' && arr.get(i) <= '9') {
arr.add(arr.get(i));
arr.remove(i);
}
}
}
私有静态无效排列排列顺序(列表arr){
对于(int i=0;i 如果(arr.get(i)>='0'&&arr.get(i)我已经建立了我的逻辑,它是这样工作的:
- 首先计算有多少个
数字、小写、大写和特殊的字符
- 设置每种类型的起始索引
- 为循环启动
,
并开始将它们插入正确的位置
工作代码:
public class stackLong
{
static char[] array = {'1', 'a', 'B', '2', 'h', '3', 'C', 'Z', '$', 'o', '5'};
public static void main(String[] args)
{
int number=0,small=0,capital=0,special=0;
//calculates the total number of characters of each type
for(int i =0; i<array.length;i++)
{
if (array[i]>=65 && array[i]<=90) // capital
capital++;
else if (array[i]>=97 && array[i]<=122) //small
small++;
else if (array[i]>=48 && array[i]<=57) // number
number++;
else if ((array[i]>0 && array[i]<=47)||(array[i]>=58 && array[i]<=64)|| (array[i]>=91 && array[i]<=96)||(array[i]>=123 && array[i]<=127))
special++;
}
// sets their starting index
int smallIndex = number;
int capitalIndex = small + smallIndex;
int specialIndex = capitalIndex + capital;
number = 0;
for(int i =0; i<array.length;i++)
{
if (array[i]>=48 && array[i]<=57) // number
{
swap(i,number);
number++;
}
}
for(int i =smallIndex; i<array.length;i++)
{
if (array[i]>=97 && array[i]<=122) //small
{
swap(i,smallIndex);
smallIndex++;
}
}
for(int i =capitalIndex; i<array.length;i++)
{
if (array[i]>=65 && array[i]<=90) // capital
{
swap(i,capitalIndex);
capitalIndex++;
}
}
for(int i =specialIndex; i<array.length;i++) // special
{
if ((array[i]>0 && array[i]<=47)||(array[i]>=58 && array[i]<=64)|| (array[i]>=91 && array[i]<=96)||(array[i]>=123 && array[i]<=127))
{
swap(i,specialIndex);
specialIndex++;
}
}
System.out.printf("\n");
for(int j =0; j<array.length;j++)
{
System.out.printf(array[j] + " ");
}
}
public static void swap(int frst, int scnd)
{
char temp = array[frst];
array[frst] = array[scnd];
array[scnd] = temp;
}
}
公共类stackLong
{
静态字符[]数组={'1','a','B','2','h','3','C','Z','$','o','5'};
公共静态void main(字符串[]args)
{
整数=0,小=0,大写=0,特殊=0;
//计算每种类型的字符总数
对于(int i=0;i=65&&array[i]=97&&array[i]=48&&array[i]0&&array[i]=58&&array[i]=91&&array[i]=123&&array[i]到目前为止有任何尝试吗?提前谢谢你
…堆栈溢出不是一种免费的短期代码编写服务,就像麦当劳那样(它提供薯条,而不是代码)。如果您需要帮助,您必须向我们展示一些您熟悉的代码(抱歉…尝试过)。我已经添加了我尝试过的代码。请看一看您是否理解逻辑?如果是,那么我很乐意提供帮助。如果您找到任何有帮助的答案,您可以随时向上投票:)