【问题标题】:How do you do a compare of more than or less than with string您如何与字符串进行大于或小于的比较
【发布时间】:2025-12-28 19:15:08
【问题描述】:

大家好,我想逐个字符串进行比较,但我不知道怎么做。

如果用户输入的字符串与数组相同,那么它会做某事或不做某事,它会说不是数组。

有人对比较字符串有什么建议吗?但是可以比较字符串吗?像下面的代码

Scanner input = new Scanner(System.in);
String Array[] = {"Henry", "Alex"};

System.out.print("Enter a name: ");
String ans = input.nextLine();
 
if (ans > array){
  System.out.println("Name is available");
} else {
  System.out.println("Name is not available"
}

【问题讨论】:

    标签: java arrays string compare string-comparison


    【解决方案1】:

    没有一种方法可以检测列表中的值。首先,您必须将数组转换为列表。还有一个方法:

    1。使用“包含”方法

    List 有一个名为contains() 的方法,它返回布尔值。 True - 如果值/对象在列表中,false - 如果值不在列表中。
    示例:

    String[] array = {"apple", "orange"};
    List<String> list = Arrays.asList(array);
    String value = "apple";
    
    if (list.contains(value)) {
        System.out.println("Value is in the list");
    } else {
        System.out.println("Value is not in the list");
    }
    

    这是检测数组是否包含值/对象的最简单方法。此外,您可以使用.indexOf() 方法代替使用.contains(),如果数组中不存在值,则该方法返回-1。这也是其他编程语言中最古老的方式:if (list.indexOf(value) != -1)
    这些方法的问题可能是输入的值和数组中的值具有不同的字符大小写(大写/小写)。要解决这个问题,您应该迭代数组并使用相同的字符大小写。


    2。迭代数组

    当字符串值大小写不匹配时,迭代数组值可以解决问题。

    示例:

    String[] array = {"Apple", "Orange"};
    String value = "apple";
    
    boolean isInArray = false;
    for (String item : array) {
        isInArray = item.toLowerCase().equals(value.toLowerCase());
        if (isInArray) {
            System.out.println("Value is in the list");
            break; // exiting array iteration when value was found
        }
    }
    if (!isInArray) { // if all array was iterated and no matching value was found
        System.out.println("Value is not in the list");
    }
    

    3。使用集合流

    此方法仅适用于 Java 8 及更高版本。然后,您可以对流使用 lambda 表达式。但有时使用流可能是多余的。

    示例:

    String[] array = {"apple", "orange"};
    List<String> list = Arrays.asList(array);
    String value = "apple";
    
    boolean isInArray = list.stream().anyMatch(item -> item.toLowerCase().equals(value.toLowerCase()));
    if (isInArray) {
        System.out.println("Value is in the list");
    } else {
        System.out.println("Value is not in the list");
    }
    

    【讨论】:

      【解决方案2】:

      您可以迭代数组并将字符串与每个元素进行比较。一旦找到匹配项,您应该打印Found 消息并中断循环。如果在整个循环中找不到匹配项,则在循环后打印Not found 消息。

      import java.util.Scanner;
      
      public class Main {
          public static void main(String[] args) {
              Scanner input = new Scanner(System.in);
              String array[] = { "Henry", "Alex" };
      
              System.out.print("Enter a name: ");
              String ans = input.nextLine();
      
              boolean found = false;
              for (String s : array) {
                  if (s.equals(ans)) {
                      System.out.println("Name is available");
                      found = true;
                      break;
                  }
              }
      
              if (!found) {
                  System.out.println("The name does not exist in the array");
              }
          }
      }
      

      示例运行:

      Enter a name: Alex
      Name is available
      

      另一个示例运行:

      Enter a name: Nisha
      The name does not exist in the array
      

      请注意,我使用了boolean 变量found 来跟踪数组中是否存在ans。即使不使用这样的附加变量,也有办法做到这一点:

      import java.util.Scanner;
      
      public class Main {
          public static void main(String[] args) {
              Scanner input = new Scanner(System.in);
              String array[] = { "Henry", "Alex" };
      
              System.out.print("Enter a name: ");
              String ans = input.nextLine();
              int i;
      
              for (i = 0; i < array.length; i++) {
                  if (array[i].equals(ans)) {
                      System.out.println("Name is available");
                      break;
                  }
              }
      
              // If the loop has been completed without `break`, it means `name` does not
              // exist
              if (i == array.length) {
                  System.out.println("The name does not exist in the array");
              }
          }
      }
      

      示例运行:

      Enter a name: Alex
      Name is available
      

      另一个示例运行:

      Enter a name: Nisha
      The name does not exist in the array
      

      【讨论】:

      • 顺便说一下,迭代是什么意思其实我不太明白这个词。我看到很多人说迭代数组,但这意味着什么?
      • @NISHANAJIHAH - 在编程中,迭代意味着导航数组、列表、集合等。如有任何疑问,请随时发表评论。
      【解决方案3】:

      查看字符串是否在数组中

          Scanner input = new Scanner(System.in);
          List<String> list = Arrays.asList("Henry", "Alex");
      
          System.out.print("Enter a name: ");
          String ans = input.nextLine();
           
          if (list.contains(ans)){
            System.out.println("Name is in list");
          } else {
            System.out.println("Name is not in list");
          }
      

      【讨论】:

      • 这个List&lt;String&gt; list = Arrays.asList("Henry", "Alex");其实是Array List吧?
      • 是的,这是List&lt;String&gt; list = Arrays.asList(new String []{"Henry", "Alex"});的更短写法
      【解决方案4】:

      来自 w3schools 的一些信息:

      equals() 方法比较两个字符串,如果字符串相等则返回 true,否则返回 false。

      提示:使用 compareTo() 方法按字典顺序比较两个字符串。

      一个示例 sn-p 代码:

      String myStr1 = "Hello";
      String myStr2 = "Hello";
      System.out.println(myStr1.compareTo(myStr2));
      

      如果它们相等,则返回 0。如果不是,它会返回一些值 您可以通过将返回值传递给变量来运行 if else 如果它等于 0 打印等于 否则打印不等于

      希望我已经回答了

      如果您想搜索并查找字符串是否在数组中,请查看此链接以获取更好的信息https://www.geeksforgeeks.org/check-if-a-value-is-present-in-an-array-in-java/

      【讨论】:

      • 但是 compareTo() 不应该只把它作为结果的真/假吗?
      • 如果相等则返回 0,如果不相等则返回一些值
      • 问题似乎是检查字符串是否在字符串数组中