Java 如何将一个字符与字符串中的单个字符进行比较?
我试图确定字符串开头的字符是否不等于另一个字符串中的任何字符 我的问题是,即使角色是“a”,例如,它仍然会在任何其他角色上绊倒 以下是我目前掌握的代码:Java 如何将一个字符与字符串中的单个字符进行比较?,java,Java,我试图确定字符串开头的字符是否不等于另一个字符串中的任何字符 我的问题是,即使角色是“a”,例如,它仍然会在任何其他角色上绊倒 以下是我目前掌握的代码: public void searcher(String s) { boolean done = false; String checker = "_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; for (int x = 0; x <
public void searcher(String s)
{
boolean done = false;
String checker = "_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
for (int x = 0; x < checker.length(); x++)
{
if(s.charAt(0) != checker.charAt(x))
{
System.out.println("Answer: " + s + "is not a valid identifier\n");
break;
}
}
公共无效搜索器(字符串s)
{
布尔完成=假;
字符串检查器=“\u abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyz”;
对于(int x=0;x
布尔值isValidIdentifier=checker.indexOf(s.charAt(0))<0;
您需要使用而不是charAt
,如下所示:
if (checker.indexOf(s.charAt(0)) != -1) {
// Valid identifier.
} else {
// Invalid identifier.
}
换句话说,检查您的
检查程序字符串是否包含s
(s.charAt(0)
)的第一个字符(indexOf!=-1
)
public void searcher(String s) {
boolean isValid = false;
String checker = "_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
for (int x = 0; x < checker.length(); x++)
{
if(s.charAt(0) == checker.charAt(x))
{
isValid = true;
break;
}
}
if(isValid == true) //or if(isValid)
System.out.println("Answer: " + s + "is a valid identifier\n");
else
System.out.println("Answer: " + s + "is not a valid identifier\n");
}
公共无效搜索器(字符串s){
布尔值isValid=false;
字符串检查器=“\u abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyz”;
对于(int x=0;x
说明:
我所做的是:
默认情况下,假设“s”的第一个字符无效,然后遍历默认字符串的字符,如果存在匹配项,则s有效并中断
希望这有帮助!一些小改动可能有助于澄清问题:
public void searcher(String s)
{
String testValues = "_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
boolean found = false;
char target = s.charAt(0);
for (int i = 0; i< testValues.length(); i++)
{
if(target == testValues.charAt(i))
{
found = true;
break;
}
}
if (found)
System.out.println ("target (" + target + "): FOUND");
else
System.out.println ("target (" + target + "): NOT FOUND");
}
公共无效搜索器(字符串s)
{
字符串testValues=“\u abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyz”;
布尔值=false;
char target=s.charAt(0);
对于(int i=0;i
等价地,您可以丢失整个循环并使用String.indexOf()代替:)我认为您要做的是打印System.out.println(“答案:“+s+”不是有效的标识符”);
当检查器不包含String s
的第一个字符时。如果是这样,请使用此代码执行此操作:
public void searcher(String s)
{
String checker = "_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
if (checker.indexOf(s.charAt(0)) == -1)
{
System.out.println("Answer: " + s + " is not a valid identifier\n");
}
}
也可以使用小型正则表达式匹配方法。。
(代码未测试;)
另外,尤其是刚开始编码时,尽可能多地将功能提取到简洁的小方法中
public void searcher(String s) {
String checker = "_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
if (!matches(s.substring(0,1), checker))
System.out.println("Answer: " + s + "is not a valid identifier\n");
}
public boolean matches(String test, String pattern) {
Pattern p = Pattern.compile("["+pattern+"]");
Matcher m = p.matcher(test);
return m.matches();
}
有关Java正则表达式的更多信息的快速链接:您听说过String.indexOf()方法吗?
public void searcher(String s) {
String checker = "_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
if (!matches(s.substring(0,1), checker))
System.out.println("Answer: " + s + "is not a valid identifier\n");
}
public boolean matches(String test, String pattern) {
Pattern p = Pattern.compile("["+pattern+"]");
Matcher m = p.matcher(test);
return m.matches();
}