java - 有没有办法在没有任何数组的情况下在 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;
需要一个变量,但给出了一个值。
请帮我解决这个问题,我将永远感激你。
解决方案
也许老师想测试你对新流 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]
推荐阅读
- mysql - 如何从 MySQL 中的第二个表中打印数据
- javascript - Sequelize/postgres:获取与对象数组中的值与提供的值匹配的记录
- python - 使用 Python Click,如何添加超过 5 个选项,即超过 5 个?
- java - 对于最少的移动次数,我们需要最大化我们双倍金钱的次数
- sql - 尽管按表达式分组的值不同,但对查询项目进行分组
- jax-rs - 在 JAX-RS 应用程序中出现内部服务器错误时记录请求
- tkinter - 如何在 IDLE python 中将背景/壁纸更改为图片?
- powerbi - 在哪里放置 Power BI 源以使报告正常工作?
- javascript - 如何仅使用 CSS 设计 Angular 响应式组件
- android - Chrome 开发工具设备配置