如何检查一个单词是否包含一个字母或一组字母?
How do I check to see if a word contains a letter or group of letters?
我正在为我的 CompSci I class 开发一个程序,但我完全被困住了。作业是使用 if 语句来检查特定字符串是否包含一个字母或一组字母。我为此创建了一个 class 并且我已经布置了所有内容,但我只是不知道如何开始搜索字符。我对字符串和 Return 方法真的很陌生。我已经在寻找类似的问题,但 none 确实帮助了我寻找的东西。我将不胜感激。
到目前为止我的代码:
主要:
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.contains():
您必须遍历字符串中的每个字符。
您可以使用 String.charAt(int i) 来获取位置 i.
的单个字符
要检查子字符串,您必须遍历两个字符串。
使用 if 语句,您只需检查两个字符是否相等。在这种情况下,您发现了一个事件。
我相信您正在寻找的是String class。特别是您正在查看 .contains(CharSequence s)
方法。下面是您如何针对您的场景执行此操作的示例(使用 if 语句)
boolean characterCheckString = false;
String myString = "abcde";
if(myString.contains("a")) {
characterCheckString = true;
}
阅读有关此方法的更多信息 here。
您可以简单地使用 String-class 的包含方法,它已经实现了所需的行为。但我认为,这项作业的重点是学习如何去做。因此,一种基本方法是遍历 String 中的所有字符并与目标字符进行比较。您可以使用方法 length() 获取字符串的长度,方法 charAt(int) 为您提供给定位置的字符。所以它可能看起来像这样:
for (int i = 0; i < check.length(); i++() {
if (check.charAt(i) == a) return true;
}
return false;
您可以从那开始扩展以检查子字符串。
一个简单的方法是使用 String Class 的 contains
方法。如果您想手动执行此操作,请使用 substring
方法检查每个可能的子字符串,即您要查找的字符串的长度。使用equals
方法进行比较。确保在迭代字符串时它确实比最后一个索引延伸得更远。
我提供了一个粗略的工作示例(编译)
您可以根据需要将其适应多文件 main + class 的情况。但是 main 也可以与 class 定义在同一个文件中(但只能在您的 class 定义文件之一中,因为只能有一个 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 method"。 return是一个语句,不是一个方法。了解其中的区别很重要。
此外,在 Java 中,您可以在 class 定义中静态初始化变量。对于简单的情况,您不需要在构造函数中执行此操作,您可以在定义中编写 String check = ""。
上面的例子很粗糙,形式不佳。我永远不会以这种方式编写真实世界的程序,这只是概念证明。
所以我尽可能避免使用标志、变量、函数和循环。
我用过 do...while()。这种形式的循环通常不是首选或不需要的,并且与在顶部显示条件的 for 循环相比,它使代码更难阅读和维护。您通常可以(通常应该)找到一种方法将循环结构化为适用于 for() 而不是 do/while 的形式。您通常可以通过使用布尔标志或空检查将循环有效地安排为 for() 格式。
这个例子没有考虑任意长度的子字符串(因为我们使用的是 if 语句,所以对于长子字符串来说它会变得非常长,而处理可变长度子字符串的 if 语句会非常复杂-字符串)
导致此示例形式不佳的另一个问题是它没有创建函数来处理在整个代码中重复的事情(例如检查值并打印语句的函数)。
我正在为我的 CompSci I class 开发一个程序,但我完全被困住了。作业是使用 if 语句来检查特定字符串是否包含一个字母或一组字母。我为此创建了一个 class 并且我已经布置了所有内容,但我只是不知道如何开始搜索字符。我对字符串和 Return 方法真的很陌生。我已经在寻找类似的问题,但 none 确实帮助了我寻找的东西。我将不胜感激。
到目前为止我的代码: 主要:
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.contains():
您必须遍历字符串中的每个字符。 您可以使用 String.charAt(int i) 来获取位置 i.
的单个字符要检查子字符串,您必须遍历两个字符串。
使用 if 语句,您只需检查两个字符是否相等。在这种情况下,您发现了一个事件。
我相信您正在寻找的是String class。特别是您正在查看 .contains(CharSequence s)
方法。下面是您如何针对您的场景执行此操作的示例(使用 if 语句)
boolean characterCheckString = false;
String myString = "abcde";
if(myString.contains("a")) {
characterCheckString = true;
}
阅读有关此方法的更多信息 here。
您可以简单地使用 String-class 的包含方法,它已经实现了所需的行为。但我认为,这项作业的重点是学习如何去做。因此,一种基本方法是遍历 String 中的所有字符并与目标字符进行比较。您可以使用方法 length() 获取字符串的长度,方法 charAt(int) 为您提供给定位置的字符。所以它可能看起来像这样:
for (int i = 0; i < check.length(); i++() {
if (check.charAt(i) == a) return true;
}
return false;
您可以从那开始扩展以检查子字符串。
一个简单的方法是使用 String Class 的 contains
方法。如果您想手动执行此操作,请使用 substring
方法检查每个可能的子字符串,即您要查找的字符串的长度。使用equals
方法进行比较。确保在迭代字符串时它确实比最后一个索引延伸得更远。
我提供了一个粗略的工作示例(编译) 您可以根据需要将其适应多文件 main + class 的情况。但是 main 也可以与 class 定义在同一个文件中(但只能在您的 class 定义文件之一中,因为只能有一个 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 method"。 return是一个语句,不是一个方法。了解其中的区别很重要。
此外,在 Java 中,您可以在 class 定义中静态初始化变量。对于简单的情况,您不需要在构造函数中执行此操作,您可以在定义中编写 String check = ""。
上面的例子很粗糙,形式不佳。我永远不会以这种方式编写真实世界的程序,这只是概念证明。 所以我尽可能避免使用标志、变量、函数和循环。
我用过 do...while()。这种形式的循环通常不是首选或不需要的,并且与在顶部显示条件的 for 循环相比,它使代码更难阅读和维护。您通常可以(通常应该)找到一种方法将循环结构化为适用于 for() 而不是 do/while 的形式。您通常可以通过使用布尔标志或空检查将循环有效地安排为 for() 格式。
这个例子没有考虑任意长度的子字符串(因为我们使用的是 if 语句,所以对于长子字符串来说它会变得非常长,而处理可变长度子字符串的 if 语句会非常复杂-字符串)
导致此示例形式不佳的另一个问题是它没有创建函数来处理在整个代码中重复的事情(例如检查值并打印语句的函数)。