Java 检查字符串是否为字母+;只有空间吗?

Java 检查字符串是否为字母+;只有空间吗?,java,xcode,loops,for-loop,boolean,Java,Xcode,Loops,For Loop,Boolean,我想编写一个静态方法,该方法传递一个字符串,并检查该字符串是否仅由字母和空格组成。我可以根据需要使用String的方法length()和charAt(I) 我的想法如下:(对伪代码感到抱歉) public静态布尔onlylettersspace(字符串s){ 对于(i=0;i这不是测试字符相等性的方法,一个简单的解决方法是 public static boolean onlyLettersSpaces(String s){ for(i=0;i<s.length();i++){

我想编写一个静态方法,该方法传递一个字符串,并检查该字符串是否仅由字母和空格组成。我可以根据需要使用String的方法length()和charAt(I)

我的想法如下:(对伪代码感到抱歉)

public静态布尔onlylettersspace(字符串s){

对于(i=0;i这不是测试字符相等性的方法,一个简单的解决方法是

public static boolean onlyLettersSpaces(String s){
  for(i=0;i<s.length();i++){
    char ch = s.charAt(i);
    if (Character.isLetter(ch) || ch == ' ') {
      continue;
    }
    return false;
  }
  return true;
}
public静态布尔onlylettersspace(字符串s){

对于(i=0;i使用正则表达式。此正则表达式仅在以字母和空格开头、包含字母和空格结尾时匹配

^[ A-Za-z]+$
在Java中,将其初始化为模式,并检查它是否与字符串匹配

Pattern p = Pattern.compile("^[ A-Za-z]+$");
Matcher m = p.matcher("aaaaab");
boolean b = m.matches();

对于您提到的约束(仅使用length()和charAt()),您几乎做到了

在每个字符上循环并检查它是否是可接受的字符之一-这是正确的方法。如果发现不可接受的字符,则立即返回“false”,这也很好。错的是,如果你决定接受字符,你会返回true。但是定义说只有在所有字符都被接受的情况下才返回true。你需要将“return true”移动到循环后(这是你知道所有字符都被接受的点)

因此,您将伪代码更改为:

for (all characters in string) {
    if (character is bad) {
        // one bad character means reject the string, we're done.
        return false;
    }
}
// we now know all chars are good
return true;

你能使用正则表达式吗?什么是“ch”?***************@user3735218抱歉,已编辑。这是一个复制粘贴错误。
char ch=s.charAt(i);
Character.isleter()返回的值远不止是a-z。这可能不是OP需要的(我怀疑这是一个家庭作业,任务是解决字符ok/bad决策以及字符串循环逻辑).如果我在循环中放入return语句,循环会取消吗?希望如此does@user3735218是的,会的。试着在实际代码中解决这个问题,你会发现返回后加上break会给出一个编译器错误,因为这个返回使它不可能到达break。
for (all characters in string) {
    if (character is bad) {
        // one bad character means reject the string, we're done.
        return false;
    }
}
// we now know all chars are good
return true;