如何使用函数在Java中按字母顺序排列字符串
} 这是我的代码,但我不知道我做错了什么。我已经为此工作了一段时间,我需要一个代码,允许用户输入3个名称,然后按字母顺序排序的名称 这个程序的要求是让用户输入3个字符串,然后使用一个接受3个字符串的函数按字母顺序打印出来——返回类型应该是void——这意味着没有返回到main的内容,该函数将按字母顺序打印出这三个单词,您需要担心的情况应该有6个(想想如果,elseif…else)。 下面是示例输出在控制台中的外观(>表示它在控制台中--您实际上不会看到这一点): 输入第一个小写字符串 棒极了 输入第二个小写字符串 伪造的 输入第三个小写字符串 齐林 (以下情况发生在VOID函数中) 这是按字母顺序排列的单词 棒极了 伪造的 齐林如何使用函数在Java中按字母顺序排列字符串,java,Java,} 这是我的代码,但我不知道我做错了什么。我已经为此工作了一段时间,我需要一个代码,允许用户输入3个名称,然后按字母顺序排序的名称 这个程序的要求是让用户输入3个字符串,然后使用一个接受3个字符串的函数按字母顺序打印出来——返回类型应该是void——这意味着没有返回到main的内容,该函数将按字母顺序打印出这三个单词,您需要担心的情况应该有6个(想想如果,elseif…else)。 下面是示例输出在控制台中的外观(>表示它在控制台中--您实际上不会看到这一点): 输入第一个小写字符串 棒极了 输
所以你可以使用任何东西,只要你把它放在一个方法中
import java.util.Scanner;
public class alphabetical {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner Alphabet= new Scanner(System.in);
System.out.println("Input First Name");
String UserInput= Alphabet.next();
System.out.println("Input second name");
String UserInput2= Alphabet.next();
System.out.println("Input third name");
String UserInput3= Alphabet.next();
System.out.println(alpha)UserInput,UserInput2,UserInput3));
}
public static void alpha(String fromUser,String fromUser2, String fromUser3)
{
if (fromUser.compareTo(fromUser2)>0)
{
System.out.println(fromUser2);
}
else if(fromUser.compareTo(fromUser3)>0)
{
System.out.println(fromUser3);
}
else if (fromUser2.compareTo(fromUser3)>0)
{
System.out.println(fromUser3);
}
else if (fromUser2.compareTo(fromUser)>0)
{
System.out.println(fromUser);
}
else if (fromUser3.compareTo(fromUser)>0)
{
System.out.println(fromUser);
}
else if (fromUser3.compareTo(fromUser2)>0)
{
System.out.println(fromUser2);
}
}
在Java8中,它很简单。可以使用lambda对字符串集合进行排序:
public static void alpha(String fromUser,String fromUser2, String fromUser3){
String[] sArray = {fromUser, fromUser2, fromUser3};
Arrays.sort(sArray);
for (String s : sArray){
System.out.print(s + " ");
}
}
publicstaticvoidmain(字符串[]args){
//TODO自动生成的方法存根
扫描仪字母表=新扫描仪(System.in);
System.out.println(“输入名字”);
字符串UserInput=Alphabet.next();
System.out.println(“输入第二个名称”);
字符串UserInput2=Alphabet.next();
System.out.println(“输入第三个名称”);
字符串UserInput3=Alphabet.next();
List List=Arrays.asList(UserInput、UserInput2、UserInput3);
排序((字符串in1,字符串in2)->in1.compareTo(in2));
list.forEach(System.out::println);
}
如果你真的不允许使用数组或列表,我希望你的教授让你写一个冗长的解决方案,这样他以后可以“展示”更好的基于数组或列表的版本
对于三个项目,确实有六种情况,您可以“只”为每种情况编写一个if/else
子句:
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner Alphabet = new Scanner(System.in);
System.out.println("Input First Name");
String UserInput = Alphabet.next();
System.out.println("Input second name");
String UserInput2 = Alphabet.next();
System.out.println("Input third name");
String UserInput3 = Alphabet.next();
List<String> list = Arrays.asList(UserInput, UserInput2, UserInput3);
list.sort((String in1, String in2) -> in1.compareTo(in2));
list.forEach(System.out::println);
}
。。。依此类推,适用于abc、acb、bac、bca、cab、cba中的每一项。为了我自己的理智,我假设存在一个lessThan()
方法,其中包含a.compareTo(b)<0
——但是如果你的教授也禁止你编写助手方法,你可以直接使用compareTo()
由于这个问题的措辞,我想这是人们所期望的——这不是一种实现排序的明智方式,但它可能是构建更好的东西的基础。它还允许您直接计算正在进行的比较数量,这可能会让一些初学者了解算法的成本
如果允许您使用数组,并且允许您使用Java提供的排序例程,那么只需将值放入数组中,排序并打印即可:
// case 1 - abc
if(lessThan(a,b) && lessThan(b,c)) {
System.out.println(a + " " + b + " " + c);
}
// case 2 - acb
else if(lessThan(a,c) && lessThan(c,b)) {
System.out.println(a + " " + c + " " + b);
}
// case 3 - bac
else if(lessThan(b,a) && lessThan(a,c)) {
System.out.println(b + " " + a + " " + c);
}
很接近,但在生成输出之前,需要将字符串与其他两个字符串进行比较。一种方法是为三行输出中的每一行创建单独的if/else if/else块。例如,这里是给定字符串s1、s2、s3的中间行
public static void alpha(String a,String b, String c) {
String[] array = new String[] {a,b,c};
Arrays.sort(array);
System.out.println(array[0] + " " + array[1] + " " + array[2]);
}
//第一个单词
. . .
//第二个词
如果使用Java8流((s1.compareTo(s2)>=0)和&(s1.compareTo(s3)=0)和&(s2.compareTo(s3),您可以这样做:
if ( (s1.compareTo(s2)<=0) && (s1.compareTo(s3)<=0) && (s2.compareTo(s3)<=0) ) {
// abc
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
} else if (s1.compareTo(s2)<=0) && (s1.compareTo(s3)<=0) && (s2.compareTo(s3)>=0) {
// acb
System.out.println(s1);
System.out.println(s3);
System.out.println(s2);
} else if . . .
将用户输入存储在字符串[]中
或列出
并使用数组#排序
或集合#排序
这与Eclipse无关。你的问题纯粹是Java
。你能删除Eclipse
标记并编辑标题吗?可能的重复和第二个链接:我不能使用数组来做这件事。我在使用数组和我的教授让我重新做,只使用接受用户输入的函数。你应该在问题中提到这些额外的要求。我不能使用数组
if ( (s1.compareTo(s2)<=0) && (s1.compareTo(s3)<=0) && (s2.compareTo(s3)<=0) ) {
// abc
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
} else if (s1.compareTo(s2)<=0) && (s1.compareTo(s3)<=0) && (s2.compareTo(s3)>=0) {
// acb
System.out.println(s1);
System.out.println(s3);
System.out.println(s2);
} else if . . .
public static void alpha(String fromUser,String fromUser2, String fromUser3) {
Stream.of(fromUser, fromUser2, fromUser3).sorted().forEach(System.out::println);
}