Java 如何使用compareTo()方法按字母顺序对字符串(多于2个变量)排序?
我不知道如何使用compareTo()方法对字符串(多于2个)进行排序。对于2,我正在这样做:Java 如何使用compareTo()方法按字母顺序对字符串(多于2个变量)排序?,java,sorting,compareto,Java,Sorting,Compareto,我不知道如何使用compareTo()方法对字符串(多于2个)进行排序。对于2,我正在这样做: Scanner input = new Scanner(System.in); String name1 = input.nextLine(); String name2 = input.nextLine(); if(name1.compareTo(name2) < 0) { System.out.println(name1 + "\n" + name2); } else {
Scanner input = new Scanner(System.in);
String name1 = input.nextLine();
String name2 = input.nextLine();
if(name1.compareTo(name2) < 0)
{
System.out.println(name1 + "\n" + name2);
}
else
{
System.out.println(name2 + "\n" + name1);
}
扫描仪输入=新扫描仪(System.in);
字符串名称1=input.nextLine();
字符串名称2=input.nextLine();
如果(名称1.与(名称2)相比<0)
{
System.out.println(name1+“\n”+name2);
}
其他的
{
System.out.println(name2+“\n”+name1);
}
但是如果我需要从用户那里整理更多的数据呢?
谢谢。正如Mick Mnemonic所说,使用Java的集合类和功能。例如:
List<String> list = new ArrayList<>();
Scanner input = new Scanner(System.in);
//This should be a do-while list
list.add(input.nextLine());
list.add(input.nextLine());
Collections.sort(list);
for(String s: list) {
System.out.println(s);
}
List List=new ArrayList();
扫描仪输入=新扫描仪(System.in);
//这应该是一个待办事项列表
list.add(input.nextLine());
list.add(input.nextLine());
集合。排序(列表);
用于(字符串s:列表){
系统输出打印项次;
}
这将对列表进行如下排序:“根据其元素的自然顺序,将指定列表按升序排序。”-
不需要比较。这里是一段示例代码,允许您向列表中添加多个字符串,然后使用Java的默认比较器对它们进行排序
import java.util.*;
public class Test
{
public static void main(String[] args)
{
boolean continueLoop = true;
List<String> myStringList = new ArrayList<String>();
Scanner input = new Scanner(System.in);
System.out.println("Please eneter a string");
myStringList.add(input.nextLine());
System.out.println();
System.out.println("Please eneter a second string");
myStringList.add(input.nextLine());
System.out.println();
while(continueLoop) {
System.out.println("Would you like to add another string");
System.out.println("Enter Yes to add another string");
System.out.println("Enter No to sort the strings");
System.out.println();
String yesOrNo = input.nextLine();
if(yesOrNo.equalsIgnoreCase("Yes")) {
System.out.println();
System.out.println("Please enter another string");
myStringList.add(input.nextLine());
System.out.println();
} else {
continueLoop = false;
System.out.println();
}
}
Collections.sort(myStringList);
System.out.println("Sorted Strings");
for(String s : myStringList) {
System.out.println(" " + s);
}
}
}
编辑
对于特定数量的字符串,可以使用以下代码
import java.util.*;
public class Test
{
public static void main(String[] args)
{
boolean continueLoop = true;
List<String> myStringList = new ArrayList<String>();
Scanner input = new Scanner(System.in);
System.out.println("Please eneter how many strings you will enter");
int j = Integer.parseInt(input.nextLine());
System.out.println();
for(int i=0;i<j;i++) {
System.out.println("Please eneter a string");
myStringList.add(input.nextLine());
System.out.println();
}
Collections.sort(myStringList);
System.out.println("Sorted Strings");
for(String s : myStringList) {
System.out.println(" " + s);
}
}
}
import java.util.*;
公开课考试
{
公共静态void main(字符串[]args)
{
布尔连续运算=真;
List myStringList=new ArrayList();
扫描仪输入=新扫描仪(System.in);
System.out.println(“请输入要输入的字符串数量”);
int j=Integer.parseInt(input.nextLine());
System.out.println();
对于java中的(inti=0;i,如果要对许多字符串项进行排序,应该将它们放入一个容器中,通常是一个字符串列表(也可以使用数组)
Talk很便宜,向您展示代码,这是排序5字符串的示例
Scanner input = new Scanner(System.in);
List<String> stringList = new ArrayList<String>();
for (int i = 0; i < 5; i++) { //exact number of string
stringList.add(input.nextLine());
}
System.out.println("before sort:" + stringList);
Collections.sort(stringList);
System.out.println("after sort:" + stringList);
扫描仪输入=新扫描仪(System.in);
List stringList=新建ArrayList();
对于(int i=0;i<5;i++){//字符串的确切数目
添加(input.nextLine());
}
System.out.println(“排序前:+stringList”);
Collections.sort(stringList);
System.out.println(“排序后:+stringList”);
更新:
如果您不想使用Java collection framework的排序,如果您真的想手动使用compareTo(),那么您应该实现一个排序算法
扫描仪输入=新扫描仪(System.in);
列表=新的ArrayList();
对于(int i=0;i<5;i++){//字符串的确切数目
list.add(input.nextLine());
}
System.out.println(“排序前:+列表”);
//气泡排序开始
字符串温度;
int length=list.size();
对于(int i=0;i0){//compareTo方法
temp=列表获取(j);
list.set(j,list.get(j+1));
列表设置(j+1,温度);
}
}
//冒泡排序结束
System.out.println(“排序后:+列表”);
您可能正在寻找以下内容:
String[] arr = {"zsdsfc", "aazjkjf", "aabdd"};
System.out.println("Before:" + "\n");
for (int i = 0; i < arr.length; i++ ){
System.out.println(arr[i]);
}
System.out.println();
for (int i = 0; i < arr.length; i++ ){
for (int j = 0; j < arr.length; j++){
if(arr[i].compareTo(arr[j]) < 0){
String keeper = arr[i];
arr[i] = arr[j];
arr[j] = keeper;
}
}
}
System.out.println("After:" + "\n");
for (int i = 0; i < arr.length; i++ ){
System.out.println(arr[i]);
}
String[]arr={“zsdsfc”、“aazjkjf”、“aabdd”};
System.out.println(“之前:“+”\n”);
对于(int i=0;i
如果A大于B,则A.CompareTo(B)方法返回负数;如果A等于B,则返回零;如果B大于A,则返回正数
您可以在此处查看。假设您事先知道要比较的字符串数量,则以下操作不使用数组、列表或任何其他集合。这将比较5个字符串值:
//use a max value for comparisons
private static final String MAX_STRING = String.valueOf(Character.MAX_VALUE);
public static void compareMe(String a, String b, String c, String d, String e) {
if (a.compareTo(b) <= 0) {
if (a.compareTo(c) <= 0) {
if (a.compareTo(d) <= 0) {
if (a.compareTo(e) <= 0) {
if (a != MAX_STRING) {
System.out.println(a);
a = MAX_STRING;
} else {
return;
}
}
//swap (a,e)
compareMe(e, b, c, d, a);
} else {
//swap (a,d)
compareMe(d, b, c, a, e);
}
} else {
//swap (a,c)
compareMe(c, b, a, d, e);
}
} else {
//swap (a,b)
compareMe(b, a, c, d, e);
}
}
//使用最大值进行比较
私有静态最终字符串MAX\u String=String.valueOf(Character.MAX\u VALUE);
公共静态无效比较(字符串a、字符串b、字符串c、字符串d、字符串e){
如果(a)与(b)相比,您需要将字符串放入集合
(例如数组列表
)然后进行排序。这是一个硬编码的字符串数,比如,用户输入5个字符串,您想对它们进行排序,还是一个可变的字符串数,比如n个字符串,您想对它们进行排序?@aioobe是的,必须对精确的字符串数进行排序。@mickmemmonic是的,我知道。但我需要在不使用数组的情况下进行排序。strin的精确数是存在的必须使用compareTo()进行排序的gs。有关字符串的具体数量,请参见我答案上的编辑。我已经这样做了:如果(a.compareTo(b)<0&&a.compareTo(c)<0&&b.compareTo(c)<0){System.out.print(a+“\n”+b+“\n”+c)}如果(a.compareTo(b)<0&&a.compareTo(c)<0&&c.compareTo(b){System.out.println(a+)\n”+c+“\n”+b”),等等。我还不熟悉自己的函数。所以我使用我所知道的,只是非常基本的东西。无论如何,谢谢你的提示。确保你也在检查等式
String[] arr = {"zsdsfc", "aazjkjf", "aabdd"};
System.out.println("Before:" + "\n");
for (int i = 0; i < arr.length; i++ ){
System.out.println(arr[i]);
}
System.out.println();
for (int i = 0; i < arr.length; i++ ){
for (int j = 0; j < arr.length; j++){
if(arr[i].compareTo(arr[j]) < 0){
String keeper = arr[i];
arr[i] = arr[j];
arr[j] = keeper;
}
}
}
System.out.println("After:" + "\n");
for (int i = 0; i < arr.length; i++ ){
System.out.println(arr[i]);
}
//use a max value for comparisons
private static final String MAX_STRING = String.valueOf(Character.MAX_VALUE);
public static void compareMe(String a, String b, String c, String d, String e) {
if (a.compareTo(b) <= 0) {
if (a.compareTo(c) <= 0) {
if (a.compareTo(d) <= 0) {
if (a.compareTo(e) <= 0) {
if (a != MAX_STRING) {
System.out.println(a);
a = MAX_STRING;
} else {
return;
}
}
//swap (a,e)
compareMe(e, b, c, d, a);
} else {
//swap (a,d)
compareMe(d, b, c, a, e);
}
} else {
//swap (a,c)
compareMe(c, b, a, d, e);
}
} else {
//swap (a,b)
compareMe(b, a, c, d, e);
}
}