按字母顺序排列三个字母
Sort three letters alphabetically
目前我是一名初学的学生java。我不熟悉数组或任何复杂的方法。我的老师希望我们这样做是为了理解所涉及的逻辑,所以我不能使用内置的排序功能。有时我的代码有效。例如,当我输入 "iea" 时,它会打印 "aei",这是正确的。但是,有时当我输入 "abc" 之类的输入时,它只会打印 "c" 作为中间值。帮助?我是菜鸟
import java.util.*;
public class SortThreeLetters {
public static void main(String[]args){
Scanner sc = new Scanner(System.in);
char largest = ' ';
char middle = ' ';
char min = ' ';
String word;
System.out.println("Enter three lower case letters: ");
word = sc.nextLine();
char letter1 = word.charAt(0);
char letter2 = word.charAt(1);
char letter3 = word.charAt(2);
if ( letter1 > letter2 && letter1 > letter3 ){
largest = letter1;
if(letter2 > letter3){
middle = letter2;
min=letter3;
}
else if (letter3>letter2){
middle = letter3;
min=letter2;
}
}
else if ( letter2 > letter1 && letter2 > letter3 ){
largest = letter2;
if(letter3>letter1){
letter3=middle;
letter1=min;
}
else if (letter1>letter3){
letter1 = middle;
letter3 = min;
}
}
else if ( letter3 > letter1 && letter3 > letter2 ){
largest = letter3;
if(letter2>letter1){
letter2 = middle;
letter1 = min;
}
else if (letter1>letter2){
letter1 = middle;
letter2 = min;
}
}
System.out.println(min+""+middle+""+largest);
}
}
if ( letter1 > letter2 && letter1 > letter3 ){
largest = letter1;
if(letter2 > letter3){
middle = letter2;
min=letter3;
}
else if (letter3>letter2){
middle = letter3;
min=letter2;
}
}
else if ( letter2 > letter1 && letter2 > letter3 ){
largest = letter2;
if(letter3>letter1){
middle=letter3;
min=letter1;
}
else if (letter1>letter3){
middle=letter1;
min=letter3;
}
}
else if ( letter3 > letter1 && letter3 > letter2 ){
largest = letter3;
if(letter2>letter1){
middle=letter2;
min=letter1;
}
else if (letter1>letter2){
middle=letter1;
min=letter2;
}
}
您的赋值语句是问题的原因。赋值运算符=
左边是受让人,运算符右边是赋值。检查
中的代码
else if ( letter2 > letter1 && letter2 > letter3 )
和
else if ( letter3 > letter1 && letter3 > letter2 )
您需要在 =
运算符的左侧添加变量 largest
、middle
、min
。
目前我是一名初学的学生java。我不熟悉数组或任何复杂的方法。我的老师希望我们这样做是为了理解所涉及的逻辑,所以我不能使用内置的排序功能。有时我的代码有效。例如,当我输入 "iea" 时,它会打印 "aei",这是正确的。但是,有时当我输入 "abc" 之类的输入时,它只会打印 "c" 作为中间值。帮助?我是菜鸟
import java.util.*;
public class SortThreeLetters {
public static void main(String[]args){
Scanner sc = new Scanner(System.in);
char largest = ' ';
char middle = ' ';
char min = ' ';
String word;
System.out.println("Enter three lower case letters: ");
word = sc.nextLine();
char letter1 = word.charAt(0);
char letter2 = word.charAt(1);
char letter3 = word.charAt(2);
if ( letter1 > letter2 && letter1 > letter3 ){
largest = letter1;
if(letter2 > letter3){
middle = letter2;
min=letter3;
}
else if (letter3>letter2){
middle = letter3;
min=letter2;
}
}
else if ( letter2 > letter1 && letter2 > letter3 ){
largest = letter2;
if(letter3>letter1){
letter3=middle;
letter1=min;
}
else if (letter1>letter3){
letter1 = middle;
letter3 = min;
}
}
else if ( letter3 > letter1 && letter3 > letter2 ){
largest = letter3;
if(letter2>letter1){
letter2 = middle;
letter1 = min;
}
else if (letter1>letter2){
letter1 = middle;
letter2 = min;
}
}
System.out.println(min+""+middle+""+largest);
}
}
if ( letter1 > letter2 && letter1 > letter3 ){
largest = letter1;
if(letter2 > letter3){
middle = letter2;
min=letter3;
}
else if (letter3>letter2){
middle = letter3;
min=letter2;
}
}
else if ( letter2 > letter1 && letter2 > letter3 ){
largest = letter2;
if(letter3>letter1){
middle=letter3;
min=letter1;
}
else if (letter1>letter3){
middle=letter1;
min=letter3;
}
}
else if ( letter3 > letter1 && letter3 > letter2 ){
largest = letter3;
if(letter2>letter1){
middle=letter2;
min=letter1;
}
else if (letter1>letter2){
middle=letter1;
min=letter2;
}
}
您的赋值语句是问题的原因。赋值运算符=
左边是受让人,运算符右边是赋值。检查
else if ( letter2 > letter1 && letter2 > letter3 )
和
else if ( letter3 > letter1 && letter3 > letter2 )
您需要在 =
运算符的左侧添加变量 largest
、middle
、min
。