首页 > 解决方案 > 有没有办法在没有任何数组的情况下在 JAVA 中对整数的数字进行排序?

问题描述

我正在尝试在 JAVA 中按降序对整数的数字进行排序,但我不允许使用任何数组。

这是作为课堂作业给我的,下面是我尝试但失败的代码。

import java.util.Scanner;
class descend
{
    public static void main(String args[])
    {
        int a=0,loc=0,parse=0,temp=0,big=0;
        Scanner scan = new Scanner(System.in);
        System.out.print("Enter a number");
        a=scan.nextInt();
        String s=Integer.toString(a);
        int l=s.length();
        for(int i=0;i<l;i++)
        {
            big=(int)(s.charAt(i));
            loc=i;
            for(int j=i+1;j<l;j++)
            {
                parse=(int)(s.charAt(j));
                if(parse>big)
                {
                    big = parse;
                    loc=j;
                }
            }
            temp=parse;
            s.charAt(i)=s.charAt(loc);
            s.charAt(loc)=temp
        }
        System.out.print(s);
    }
}

在这里,我得到一个语法错误,s.charAt(i)=s.charAt(loc);并且s.charAt(loc)=temp;需要一个变量,但给出了一个值。

请帮我解决这个问题,我将永远感激你。

标签: javasorting

解决方案


也许老师想测试你对新流 API 的了解。或者,也许他希望您测试您对 Collections.sort() 和 LinkedList(不包含内部数组)的了解。

1.) 这是一个带有流 API 的解决方案:

int number = 52214;
String.valueOf(number).chars()
   .sorted()
   .map(Character::getNumericValue).forEach(System.out::print);

这将打印出:

12245

2.)这是一个带有集合的解决方案:

List<Integer> list = new LinkedList<Integer>();
StringCharacterIterator iterator = new StringCharacterIterator(String.valueOf(number));
for (char c = iterator.first(); c != CharacterIterator.DONE; c = iterator.next()) 
{
    list.add(Character.getNumericValue(c));
}
Collections.sort(list);
System.out.println("list=" + list);

这将打印出:

list=[1, 2, 2, 4, 5]

推荐阅读