Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何重新排列具有整数字符和符号的数组元素?_Java_Arrays - Fatal编程技术网

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]到目前为止有任何尝试吗?
提前谢谢你
…堆栈溢出不是一种免费的短期代码编写服务,就像麦当劳那样(它提供薯条,而不是代码)。如果您需要帮助,您必须向我们展示一些您熟悉的代码(抱歉…尝试过)。我已经添加了我尝试过的代码。请看一看您是否理解逻辑?如果是,那么我很乐意提供帮助。如果您找到任何有帮助的答案,您可以随时向上投票:)