java - 具有相同起始字母的名称排列
问题描述
public class solution{
public static void main(String [] args){
String[] priya={"priya","nandhni","nithesh","varan","rekha","sri"};
System.out.println(priya);
int n=priya.length;
for(int i=0,j=i+1;i<n;i++){
if(priya[i].compareTo(priya[j])>0)
{
String temp=priya[i];
priya[i]=priya[j];
priya[j]=temp;
}
}
for(int i=0;i<n;i++){
System.out.println(priya[i]);
}
}
}
升序的输出为
nandhni
varan
nithesh
priya
rekha
sri.
这里有什么错误?
解决方案
排序逻辑错误,你只是在做一次元素比较
更正一项如下:
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
if (priya[i].compareTo(priya[j]) > 0) {
String temp = priya[i];
priya[i] = priya[j];
priya[j] = temp;
}
}
}
推荐阅读
- docker - 尝试使用 Helm 在 Kubernetes 上安装 MariaDB ColumnStore 时出错
- android - Ionic android 构建失败并出现错误--font 变量设置未找到,甚至安装了 cordova-support-gradle-release
- laravel - Laravel Spark 中的自定义验证消息
- python - 如何分析一个没有结束的python程序?
- java - 通过集合迭代期间的 ConcurrentModificationException
- nsis - 使用 nsis 与 api 服务器通信
- mysql - 如何使用 laravel 在 vue 组件上获取和显示数据
- mysql - 在sql中转换值后如何从其他表中添加列?
- python - python中字典中的重复键
- c# - 至少一个对象必须实现 icomparable。降序C#