在Java中按降序排序数组
我试图编写一个程序,首先对给定的字符串逐个排序,然后按降序对所有字符串进行排序。我成功地按字符对字符串进行排序,但在按字符对所有已排序的字符串进行排序时遇到了问题。我尝试使用Array.sort()进行排序,但它没有递减排序,它只对第一个输入进行排序,而不是对已排序的数组进行排序在Java中按降序排序数组,java,algorithm,Java,Algorithm,我试图编写一个程序,首先对给定的字符串逐个排序,然后按降序对所有字符串进行排序。我成功地按字符对字符串进行排序,但在按字符对所有已排序的字符串进行排序时遇到了问题。我尝试使用Array.sort()进行排序,但它没有递减排序,它只对第一个输入进行排序,而不是对已排序的数组进行排序 package com.company; import java.util.Arrays; import java.util.Scanner; public class Main { static
package com.company;
import java.util.Arrays;
import java.util.Scanner;
public class Main {
static void sortString(String str)
{
char[] chArr = str.toCharArray();
String SortString = "";
for (int i = 0; i< chArr.length; i++)
{
for (int j = 0; j< chArr.length; j++)
{
if(chArr[i] > chArr[j])
{
char temp = chArr[i];
chArr[i] = chArr[j];
chArr[j] = temp;
}
}
}
String[] SortedString = new String[5];
for (int k = 0; k<chArr.length;k++)
{
SortString = SortString + chArr[k];
}
Arrays.sort(SortedString);
for (int counter = 0; counter<5; counter++)
{
System.out.println(SortedString[counter]);
}
}
public static void main(String[] args)
{
Scanner UserInput = new Scanner (System.in);
String[] names = new String[5];
for (int counter = 0; counter<5; counter++)
{
do
{
System.out.print("Input String #" + (counter+1) + ": ") ;
names[counter] = UserInput.next().toLowerCase();
}while(names[counter].length() > 25);
}
UserInput.close();
Arrays.sort(names);
for (int counter = 0; counter<5; counter++)
{
sortString(names[counter]);
}
}
}
package.com公司;
导入java.util.array;
导入java.util.Scanner;
公共班机{
静态void排序字符串(字符串str)
{
char[]chArr=str.toCharArray();
字符串SortString=“”;
for(int i=0;ichArr[j])
{
char temp=chArr[i];
chArr[i]=chArr[j];
chArr[j]=温度;
}
}
}
字符串[]SortedString=新字符串[5];
对于(int k=0;k静态字符串排序字符串(String str)
{
char[]chArr=str.toCharArray();
for(int i=0;ichArr[j])
{
char temp=chArr[i];
chArr[i]=chArr[j];
chArr[j]=温度;
}
}
}
返回新字符串(chArr);
}
公共静态void main(字符串[]args)
{
扫描仪用户输入=新扫描仪(System.in);
字符串[]名称=新字符串[5];
用于(整数计数器=0;计数器25);
}
UserInput.close();
//数组。排序(名称);此处无点排序
字符串[]字符串=新字符串[5];
对于(int计数器=0;计数器=0;i--){
System.out.println(strings[i]);
}
}
您是否尝试过使用Collections.reverseOrder()?谢谢你的回答我试着编译了它,但它并没有对每个字符串进行排序,如果你粘贴到你的主类中,它会的。输入:Input Inputz Java Javax Python输出:pthony Inputz Inputtu ajavx ajav预期输出:zutpni xvjaa ytponh vjaa Utpninerm我用你代码的最后一部分得到了它。非常感谢你是一个救命稻草请添加一些解释。仅仅删除只使用代码的答案并不是一件好事。人们通过理解来学习,这对上下文信息更有效。
static String sortString(String str)
{
char[] chArr = str.toCharArray();
for (int i = 0; i< chArr.length; i++)
{
for (int j = 0; j< chArr.length; j++)
{
if(chArr[i] > chArr[j])
{
char temp = chArr[i];
chArr[i] = chArr[j];
chArr[j] = temp;
}
}
}
return new String(chArr);
}
public static void main(String[] args)
{
Scanner UserInput = new Scanner (System.in);
String[] names = new String[5];
for (int counter = 0; counter<5; counter++)
{
do
{
System.out.print("Input String #" + (counter+1) + ": ") ;
names[counter] = UserInput.next().toLowerCase();
}while(names[counter].length() > 25);
}
UserInput.close();
// Arrays.sort(names); No point sorting here
String[] strings = new String[5];
for (int counter = 0; counter<5; counter++)
{
strings[counter] = sortString(names[counter]);
}
Arrays.sort(strings);
// increasing order:
for(String s : strings) {
System.out.println(s);
}
// decreasing order:
for(int i = 4; i >= 0; i--) {
System.out.println(strings[i]);
}
}