Java 寻找「;“中”;一串

Java 寻找「;“中”;一串,java,string,boolean,lexicographic,Java,String,Boolean,Lexicographic,因此,我试图编写一个代码来查找一组给定字符串的中间字符串,在本例中为3。我所说的中间是指词典顺序中的中间。我写的代码编译和工作没有问题,但对于某些字符串组合,它不希望正常工作。我运行了一些测试,并在下面的评论中发布了一些字符串组合给了我一个错误。测试得到的数字是字符串的实际顺序。有人告诉我,有些组合并不能满足所有的布尔语句,但我真的不知道怎么做。我知道这是一个简单的解决方案,但任何帮助都将不胜感激 import java.util.Scanner; public class MiddleStri

因此,我试图编写一个代码来查找一组给定字符串的中间字符串,在本例中为3。我所说的中间是指词典顺序中的中间。我写的代码编译和工作没有问题,但对于某些字符串组合,它不希望正常工作。我运行了一些测试,并在下面的评论中发布了一些字符串组合给了我一个错误。测试得到的数字是字符串的实际顺序。有人告诉我,有些组合并不能满足所有的布尔语句,但我真的不知道怎么做。我知道这是一个简单的解决方案,但任何帮助都将不胜感激

import java.util.Scanner;
public class MiddleString   {

    public static void main(String[] args)  {

        Scanner in = new Scanner (System.in); 

        System.out.println("Please enter the first string to compare");
            String str1 = in.nextLine();

        System.out.println ("Now enter the second string");
            String str2 = in.nextLine();

        System.out.println ("Good! And finally, the third");
            String str3 = in.nextLine();

        if ((str1.compareTo(str3) < 0) && (str1.compareTo(str2) < 0) && (str2.compareTo(str3) < 0))
            System.out.println("In lexicographic order, the string in the middle will be " + str2);
        else if ((str3.compareTo(str1) < 0) && (str1.compareTo(str2) < 0) && (str3.compareTo(str2) < 0))
            System.out.println("In lexicographic order, the string in the middle will be " + str1);
        else if ((str1.compareTo(str2) < 0) && (str3.compareTo(str2) < 0) && (str1.compareTo(str3) < 0))
            System.out.println("In lexicographic order, the string in the middle will be " + str3);
    }
}

// TESTS
// str1|str2|str3|result
//  A  |  B |  C |pass  123
//  B  |  C |  A |pass  231
//  M  |  A |  Z |FAIL  213
//  A  |  Z |  M |pass  132
//  Z  |  M |  A |FAIL  321
//  Z  |  A |  M |FAIL  312
//
import java.util.Scanner;
公营中产阶级{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(系统输入);
System.out.println(“请输入要比较的第一个字符串”);
字符串str1=in.nextLine();
System.out.println(“现在输入第二个字符串”);
字符串str2=in.nextLine();
System.out.println(“好!最后是第三个”);
字符串str3=in.nextLine();
if((str1.compareTo(str3)<0)和(str1.compareTo(str2)<0)和&(str2.compareTo(str3)<0))
在字典顺序中,中间的字符串将是“+STR2”;
else if((str3.compareTo(str1)<0)和&(str1.compareTo(str2)<0)和&(str3.compareTo(str2)<0))
在字典顺序中,中间的字符串将是“+STR1”;
else if((str1.compareTo(str2)<0)和(str3.compareTo(str2)<0)和&(str1.compareTo(str3)<0))
在字典顺序中,中间的字符串将是“+STR3”;
}
}
//测验
//str1 | str2 | str3 |结果
//A | B | C |通道123
//B | C | A |通道231
//M | A | Z |失败213
//A | Z | M |通道132
//Z | M | A |失败321
//Z | A | M |失败312
//
导入java.util.Scanner;
公营中产阶级{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(系统输入);
字符串结果=”;
System.out.println(“请输入要比较的第一个字符串”);
字符串str1=in.nextLine();
System.out.println(“现在输入第二个字符串”);
字符串str2=in.nextLine();
System.out.println(“好!最后是第三个”);
字符串str3=in.nextLine();
if((str1.与(str2)<0)相比)
{
如果((str2.与(str3)<0)相比)
{
结果=str2;
}否则
{
结果=str3;
}
}否则
{
结果=str1;
}
在字典顺序中,中间的字符串将是“+结果”;
}
}
如果
(str1.compareTo(str2)<0)和&(str2.compareTo(str3)<0)
,则检查
str1.compareTo(str3)<0是多余的。但是您确实需要检查
(str1.compareTo(str2)>0)&(str2.compareTo(str3)>0)
。或者只需检查str1.compareTo(str2)=str2.compareTo(str3)
import java.util.Scanner;

public class MiddleString {

public static void main(String[] args) {

    Scanner in = new Scanner(System.in);
    String result = "";

    System.out.println("Please enter the first string to compare");
    String str1 = in.nextLine();

    System.out.println("Now enter the second string");
    String str2 = in.nextLine();

    System.out.println("Good! And finally, the third");
    String str3 = in.nextLine();

    if ((str1.compareTo(str2) < 0)) 
    {
        if ((str2.compareTo(str3) < 0)) 
        {
            result = str2;
        } else 
        {
            result = str3;
        }
    } else 
    {
        result = str1;
    }
    System.out.println("In lexicographic order, the string in the middle will be " + result);
}
}