【问题标题】:How do I use the contains method with "if, else" statement?如何将 contains 方法与“if, else”语句一起使用?
【发布时间】:2016-11-04 16:50:05
【问题描述】:

我很难触发我的“if”语句。当我输入 CharSequence 应该搜索的“我喜欢我的‘任何东西’”时,代码会从 else 语句中排除错误。我试图通过尝试使用 CharSequence 仅识别一个字母来查看 contains 方法是否没有读取空格。那没有帮助。我还尝试将我的 contains 方法更改为布尔值,如果布尔值为真,则运行 if 语句。那也没有用。我在其他代码上搜索了一下,看起来很相似。 Eclipse 没有标记任何我刚刚开始的错误,并且对还可以尝试什么几乎没有任何线索。如果有任何关于如何清理我的代码或可能更好的方法的额外提示。请提出一些建设性的批评。

import java.util.Scanner;

public class hello {

    public static void main(String args[]) {

        Scanner scan = new Scanner(System.in);
        try {
            System.out.println("Hi, what is your name?");
            String name1 = scan.next();
            System.out.println("Hello "+ name1 + ". Tell me what you like about yourself?\n"
                    + "Please pretext what you like about yourself with the phrase 'I like my'.");
            String selfEsteem = scan.next();
            CharSequence searchString = "I Like my";

            if (selfEsteem.contains(searchString)) {
                selfEsteem = selfEsteem.replace("my", "your");
                System.out.println(selfEsteem + "also.");
            } else {
                System.err.println("Error: User did not use 'I like my' input format");
            }
        } finally {
            scan.close();
        }
    }

}

输出:

你好,你叫什么名字? 珍妮特 你好珍妮特。告诉我你喜欢自己什么? 请用“我喜欢我的”这句话来掩饰你喜欢自己的什么。 我喜欢我的胸部 错误:用户没有使用“我喜欢我的”输入格式

【问题讨论】:

  • 检查一下Like这个词的大小写,也许吧?包含应该区分大小写,并且您正在寻找“我喜欢我的”,而不是“我喜欢我的”
  • 我将 "L" 转换为 "l" ,保存文件,然后仔细输入我的答案,却得到相同的错误消息?还有其他想法吗?
  • 我的错误在于 scan.next() 方法,而不是使用 scan.nextLine()。感谢您的宝贵时间。

标签: java string if-statement contains charsequence


【解决方案1】:

您的searchString"I Like my",而您的文本是"I like my"。所以我假设你的用户会输入小写字母,contains 区分大小写,所以它不会找到它。

改为:

CharSequence searchString = "I like my";

【讨论】:

  • 我已经进行了建议的更改,但仍然收到错误消息。我还尝试将 searchString 声明为 String 类型而不是 CharSequence 类型,但这是错误的。
【解决方案2】:

您正在搜索"I Like my",而您的错误消息显示它应该是'I like my'

区分大小写。

输入"I Like my" 或将searchString 更改为“我喜欢我的”。

【讨论】:

  • 我已将我的 searchString 更改为“我喜欢我的”,并且遇到了来自 else 语句的相同错误消息。还有其他想法吗?
  • 你能复制你输入的确切输入吗?
  • 我发现了我的错误。我只使用 scan.next() 而不是 scan.nextLine() ,这会让一切变得古怪。不过感谢您的宝贵时间。
【解决方案3】:

使用

if (selfEsteem.containsIgnoreCase(searchString))
    ...

而不是

if (selfEsteem.contains(searchString))
    ...

那么用户输入的大小写无关紧要。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-01
    • 2022-01-06
    相关资源
    最近更新 更多