1.5.2
}
这是我的代码,但我不知道我做错了什么。我已经研究了一段时间,我需要一个代码,允许用户输入3个名称,然后按字母顺序对名称进行排序
这个程序的要求是让用户输入3个字符串并使用一个带3个字符串的函数按字母顺序打印它们 - 返回类型应该是void - 这意味着没有任何东西返回到main,函数只会按字母顺序打印出三个单词,应该有6个你需要担心的情况(想想if,elseif ... else)。 以下是控制台中示例输出的样子(>表示它在控制台中 - 您实际上看不到这一点):
输入第一个小写字符串
真棒
输入第二个小写字符串
假
输入第三个小写字符串
寒冷
(在VOID功能中的后续发生)
以下是按字母顺序排列的单词
真棒
假
寒冷
答案 0 :(得分:1)
如果您真的不被允许使用数组或列表,我希望您的教授让您编写一个冗长的解决方案,以便他可以在以后“揭示”更好的,基于数组或列表的版本。
对于三个项目,确实有六种情况,你可以“只”为每一个写一个if/else
条款:
// 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);
}
......等等,每个abc,acb,bac,bca,cab,cba
。为了我自己的理智,我假设存在一个包含lessThan()
的{{1}}方法 - 但如果你的教授也禁止你编写辅助方法,你可以直接使用a.compareTo(b) < 0
。
由于问题的措辞,我猜这是预期的 - 它不是实现排序的合理方式,但它可能是构建更好的东西的基础。它还允许您直接计算正在进行的比较,这可能会使初学者深入了解算法的成本。
如果允许使用数组,并且允许使用Java提供的排序例程,则只需将值放入数组中,对其进行排序并打印出来:
compareTo()
答案 1 :(得分:0)
所以你可以使用任何东西,只要你把它放在方法中......
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 + " ");
}
}
答案 2 :(得分:0)
在java 8中很简单。您可以使用lambda对字符串集合进行排序:
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);
}
答案 3 :(得分:0)
您已经关闭了,但在生成输出之前,您需要将String与两个其他字符串进行比较。一种方法是为三行输出中的每一行创建一个单独的if / else if / else块。例如,这是给出Strings s1,s2,s3的中间行。
SELECT name, capital
FROM world
WHERE LEFT(name,1)=LEFT(capital,1), name <> capital
另一种方法是考虑如何安排三件事的每一种排列。 {abc,acb,bac,bca,cab,cba}。当你只有三件事要安排时,这是可以管理的,但是当你添加更多东西时会变得非常讨厌。
// First Word
. . .
// Second Word
if ( (s1.compareTo(s2) >= 0) && (s1.compareTo(s3) <= 0) ) {
System.out.println(s1);
} else if ( (s2.compareTo(s1) >= 0) && (s2.compareTo(s3) <= 0) ) {
System.out.println(s2);
} else {
System.out.println(s3);
}
// Third Word
. . .
答案 4 :(得分:0)
使用java 8流你可以这样做:
public static void alpha(String fromUser,String fromUser2, String fromUser3) {
Stream.of(fromUser, fromUser2, fromUser3).sorted().forEach(System.out::println);
}