【问题标题】:How do I check to see if a word contains a letter or group of letters?如何检查一个单词是否包含一个字母或一组字母?
【发布时间】:2015-03-28 20:23:24
【问题描述】:

我正在为我的 CompSci I 课程开发一个程序,但我完全陷入困境。分配是使用 if 语句来检查特定字符串是否包含一个字母或一组字母。我为此创建了一个类,并且已经列出了所有内容,但我只是不知道如何开始搜索角色。我对字符串和返回方法真的很陌生。我已经在寻找类似的问题,但没有一个对我正在寻找的问题有真正的帮助。我将不胜感激。

到目前为止我的代码: 主要:

import static java.lang.System.*;

public class Lab04e
{
public static void main(String[] args)
{

}
}

字符串检查器:

import static java.lang.System.*;
public class StringChecker {

private String check;

    public void StringChecker()
    {
        check = "";
    }

    public void StringChecker(String s) //constructor
    {
        check = s;
    }

    public void setString(String s) //set string
    {
        check = s;
    }

    public boolean letterExists(char a)
    {
        return false;
    }

    public boolean findSubString(String s)
    {
        return false;
    }

    public String toString()
    {
        return check +"\n\n";
    }
}

【问题讨论】:

  • 如果您查看String class 的 Java 文档,就会找到您需要的信息。
  • 查看String class 的方法,看看是否有适合您需要的方法。
  • 您不需要contains(String) 方法吗?它在 javadocs 和所有内容中。
  • 有趣的是,String 类有一个方法与您正在尝试执行的操作同名。

标签: java string if-statement return


【解决方案1】:

我提供了一个粗略的工作示例(它可以编译) 您可以根据需要将其调整为多文件主 + 类情况。但是 main 也可以与类定义在同一个文件中(但只能在您的一个类定义文件中,因为只能有一个 main)。

你可以编译成:

javac StringChecker.java

你可以在命令行上测试它,比如:

java StringChecker stringxyztocheck

这是源代码:

import java.lang.System.*;
import java.util.*;

public class StringChecker {

    public static void main (String[] args) {
        String fullString = args[0];
        String subString = "xyz";

        if (fullString.length() < subString.length()) {
            System.out.println("'" + subString + "' not found in '" + fullString + "'");
            System.exit(0);
        }
        int i = 0;
        do {
            if (fullString.charAt(i) == subString.charAt(0) &&
                fullString.charAt(i + 1) == subString.charAt(1) &&
                fullString.charAt(i + 2) == subString.charAt(2)) {
                   System.out.println("'" + subString + "' is present in '" + fullString + "'");
                   System.exit(0);
            }
       } while (i++ < fullString.length() - subString.length());

        System.out.println(subString + "not found in '" + fullString + "'");
        System.exit(0);
    }
} 

好的,现在开始讲课:-)

您说的是“返回方法”。 return 是一个语句,而不是一个方法。重要的是要知道区别。

此外,在 Java 中,您可以在类定义中静态初始化变量。对于简单的情况,您不需要在构造函数中执行此操作,您可以在定义中编写 String check = ""。

上面的例子很粗糙,形式不好。我永远不会以这种方式编写现实世界的程序,这只是概念证明。 所以我尽量避免使用标志、变量、函数和循环。

我用过...while()。这种形式的循环通常不是首选或不需要的,并且比在顶部显示条件的 for 循环更难阅读和维护代码。您通常可以(并且通常应该)找到一种方法将循环构造成与 for() 而不是 do/while 一起使用的形式。您通常可以通过使用布尔标志或空检查有效地将循环安排为 for() 格式。

这个例子没有考虑任意长度的子字符串(因为我们使用的是 if 语句,所以对于长子字符串它会变得非常长,并且处理可变长度子字符串的 if 语句非常复杂)

另一个使这个例子变得糟糕的问题是它没有创建一个函数来处理在整个代码中重复的事情(例如一个检查一个值并打印一个语句的函数)。

【讨论】:

    【解决方案2】:

    一个简单的方法是使用String Classcontains 方法。如果您想手动执行此操作,请使用substring 方法检查每个可能的子字符串,即您要查找的字符串的长度。使用equals 方法进行比较。确保在迭代 String 时,它确实比最后一个索引延伸得更远。

    【讨论】:

      【解决方案3】:

      您可以简单地使用 String 类的 contains 方法,它已经实现了所需的行为。但我认为,这项任务的重点是学习如何去做。所以一个基本的方法是遍历字符串中的所有字符并与你的目标字符进行比较。您可以使用方法 length() 获取 String 的长度,方法 charAt(int) 为您提供给定位置的字符。所以它可能看起来像这样:

      for (int i = 0; i < check.length(); i++() {
         if (check.charAt(i) == a) return true;
      }
      return false;
      

      您可以从它开始扩展以检查子字符串。

      【讨论】:

        【解决方案4】:

        我相信您正在寻找的是String class。特别是您正在查看.contains(CharSequence s) 方法。下面是一个示例,说明如何为您的场景执行此操作(使用 if 语句)

        boolean characterCheckString = false;
        String myString = "abcde";
        if(myString.contains("a")) {
            characterCheckString = true;
        }
        

        阅读更多关于此方法的信息here

        【讨论】:

          【解决方案5】:

          如果不允许使用String.contains()

          您必须遍历字符串中的每个字符。 您可以使用 String.charAt(int i) 来获取位置 i 处的单个字符。

          要检查子字符串,您必须遍历两个字符串。

          使用 if 语句,您只需检查两个字符是否相等。在这种情况下,您发现了一个事件。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-04-21
            • 2013-03-08
            • 2013-06-07
            • 2012-11-02
            • 2021-03-25
            • 2018-07-09
            相关资源
            最近更新 更多