你如何比较大于或小于字符串

How do you do a compare of more than or less than with string

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

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

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

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"
}

来自 w3schools 的一些信息:

equals() 方法比较两个字符串,returns如果字符串相等则为真,否则为假。

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

示例代码片段:

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

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

希望我已经回答了

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

要查看字符串是否在数组中,请尝试

    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");
    }

您可以迭代数组并将字符串与每个元素进行比较。找到匹配项后,您应该打印 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

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

1。使用'contains'方法

列表具有名为 contains() 的方法,其中 returns 布尔值。 True - 如果 value/object 在列表中,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");
}

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


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");
}