如何查看单词是否包含字母或字母组?

时间:2015-01-29 14:51:40

标签: java string if-statement return

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

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

import static java.lang.System.*;

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

}
}

StringChecker:

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

5 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

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

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

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

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

答案 2 :(得分:0)

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

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

详细了解此方法here

答案 3 :(得分:0)

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

答案 4 :(得分:0)

我提供了一个粗略的工作示例(它编译) 您可以根据需要将其调整为多文件主+类情况。但是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);
    }
} 

好的,现在为讲座: - )

你说“退货方法”。 返回是一种陈述,而不是一种方法。了解差异很重要。

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

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

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

此示例不考虑任意长度的子字符串(因为我们使用的是if语句,因此对于长子字符串会非常长,而处理可变长度子字符串的if语句非常复杂)

使这个示例形式错误的另一个问题是它不会创建一个函数来处理整个代码中重复的事情(例如检查值并打印语句的函数)。

相关问题