Java 在一个单词的末尾数一下y和z

Java 在一个单词的末尾数一下y和z,java,Java,这就是问题所在:给定一个字符串,计算以“y”或“z”结尾的单词数——因此“heavy”中的“y”和“fez”中的“z”可以计算,但“yellow”中的“y”不能计算(不区分大小写)。如果单词后面没有字母,我们会说y或z位于单词的末尾。(注意:Character.isleter(char)测试字符是否为字母。) 这是我的代码: public int countYZ(String str) { int count = 0; for (int i=0; i<str.length(); i

这就是问题所在:给定一个字符串,计算以“y”或“z”结尾的单词数——因此“heavy”中的“y”和“fez”中的“z”可以计算,但“yellow”中的“y”不能计算(不区分大小写)。如果单词后面没有字母,我们会说y或z位于单词的末尾。(注意:Character.isleter(char)测试字符是否为字母。)

这是我的代码:

public int countYZ(String str) {
  int count = 0;
  for (int i=0; i<str.length(); i++){
  if (Character.isLetter(i) && (Character.isLetter(i+1)==false || i+1==str.length()) && (Character.toLowerCase(str.charAt(i))=='y' || Character.toLowerCase(str.charAt(i))=='z')){
  count++;
  }
  }
  return count;
}
public int countYZ(字符串str){
整数计数=0;
对于(int i=0;i您可以使用正则表达式:

import java.util.regex.Pattern;
import java.util.regex.Matcher;

public int countYZ(String str) {
    int count = 0;
    Pattern regex = Pattern.compile("[yz](?!\\p{L})", Pattern.CASE_INSENSITIVE);
    Matcher regexMatcher = regex.matcher(str);
    while (regexMatcher.find()) {
        count++;
    } 
    return count;
}
说明:

您可以使用正则表达式:

import java.util.regex.Pattern;
import java.util.regex.Matcher;

public int countYZ(String str) {
    int count = 0;
    Pattern regex = Pattern.compile("[yz](?!\\p{L})", Pattern.CASE_INSENSITIVE);
    Matcher regexMatcher = regex.matcher(str);
    while (regexMatcher.find()) {
        count++;
    } 
    return count;
}
说明:

使用
split()
endsWith()

使用
split()
endsWith()

试试这个办法

    for (int i = 0; i < str.length(); i++) {
        if ((Character.toLowerCase(str.charAt(i)) == 'y' || Character
                .toLowerCase(str.charAt(i)) == 'z')
                && i == str.length() - 1
                || !Character.isLetter(str.charAt(i + 1))) {
            count++;
        }
    }
for(int i=0;i
尝试此修复

    for (int i = 0; i < str.length(); i++) {
        if ((Character.toLowerCase(str.charAt(i)) == 'y' || Character
                .toLowerCase(str.charAt(i)) == 'z')
                && i == str.length() - 1
                || !Character.isLetter(str.charAt(i + 1))) {
            count++;
        }
    }
for(int i=0;i
试试这个

public class CountXY {

    /**
     * @param args
     */
    public static int countXY(String str){
        int count = 0;
        String strSplit[] = str.split(" ");
        for(String i:strSplit){
            if(i.endsWith("y")||i.endsWith("z")||i.endsWith("Y")||i.endsWith("Z")){
                count++;
            }
        }
        return count;   
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String str = "Abcy Asdz z z z y y y yyu ZZ Y ";
        System.out.println("Count::"+countXY(str));
    }

}
试试这个

public class CountXY {

    /**
     * @param args
     */
    public static int countXY(String str){
        int count = 0;
        String strSplit[] = str.split(" ");
        for(String i:strSplit){
            if(i.endsWith("y")||i.endsWith("z")||i.endsWith("Y")||i.endsWith("Z")){
                count++;
            }
        }
        return count;   
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String str = "Abcy Asdz z z z y y y yyu ZZ Y ";
        System.out.println("Count::"+countXY(str));
    }

}
你也可以试试这个

 public static void main(String[] args){
    System.out.println(countYZ("abcxzy"));
}

public static int countYZ(String str) {
    int countYandZ=0;
    String[] arr=str.split(" ");
    for (String i:arr){
        if(("Y".equalsIgnoreCase(String.valueOf(i.charAt(i.length()-1))))||("Z".equalsIgnoreCase(String.valueOf(i.charAt(i.length()-1))))){
              countYandZ++;
        }
    }
    return countYandZ;
}
你也可以试试这个

 public static void main(String[] args){
    System.out.println(countYZ("abcxzy"));
}

public static int countYZ(String str) {
    int countYandZ=0;
    String[] arr=str.split(" ");
    for (String i:arr){
        if(("Y".equalsIgnoreCase(String.valueOf(i.charAt(i.length()-1))))||("Z".equalsIgnoreCase(String.valueOf(i.charAt(i.length()-1))))){
              countYandZ++;
        }
    }
    return countYandZ;
}

您的代码不起作用,因为存在以下两种情况

Character.isLetter(i)-->这里您正在检查isLetter中的i,它是int

(Character.isleter(i+1)=false->它将导致indexout错误

请检查以下我已经检查了它的工作良好,它只是你的代码修改版本

public class FirstClass {
    public static void main(String args[]) {
        String string="fez day";
          int count = 0;
         String[] strcheck = string.split(" "); 
         for (String str : strcheck) {
          if (Character.isLetter(str.charAt(str.length()-1)) &&(Character.toLowerCase(str.charAt(str.length()-1))=='y' || Character.toLowerCase(str.charAt(str.length()-1))=='z')){
              count++;
          }
         }
          System.out.println(count);
        }
}

希望这会有所帮助,祝你好运,你的代码不起作用,因为以下两个条件

Character.isLetter(i)-->这里您正在检查isLetter中的i,它是int

(Character.isleter(i+1)=false->它将导致indexout错误

请检查以下我已经检查了它的工作良好,它只是你的代码修改版本

public class FirstClass {
    public static void main(String args[]) {
        String string="fez day";
          int count = 0;
         String[] strcheck = string.split(" "); 
         for (String str : strcheck) {
          if (Character.isLetter(str.charAt(str.length()-1)) &&(Character.toLowerCase(str.charAt(str.length()-1))=='y' || Character.toLowerCase(str.charAt(str.length()-1))=='z')){
              count++;
          }
         }
          System.out.println(count);
        }
}
希望这会有所帮助,祝你好运

以下是我所做的:

public int countYZ(String str) {
      //Initialize a return integer
      int ret = 0;
      //If it has at least 2 characters, we check both ends to see how many matching instances we have.
      if (str.length() >= 2)
      {
        if (!Character.isLetter(str.charAt(1)) && (str.charAt(0) == 'y' || str.charAt(0) == 'Y' || str.charAt(0) == 'z' || str.charAt(0) == 'Z')) 
        {
          ret++;
        }
        if (Character.isLetter(str.charAt(str.length() - 2)) && (str.charAt(str.length()-1) == 'y' || str.charAt(str.length()-1) == 'Y' || str.charAt(str.length()-1) == 'z' || str.charAt(str.length()-1) == 'Z')) 
        {
          ret++;
        }
      }
      //If it has more than 3 characters, we check the middle using a for loop.
      if (str.length() >= 3)
      {
        for (int i = 2; i < str.length(); i++)
        {
          char testOne = str.charAt(i-2);
          char testTwo = str.charAt(i-1);
          char testThree = str.charAt(i);
          //if the first char is a letter, second is a "YZyz" char, and the third is not a letter, we increment ret by 1.
          if (Character.isLetter(testOne) && (testTwo == 'y' || testTwo == 'Y' || testTwo == 'z' || testTwo == 'Z') && (!Character.isLetter(testThree)))
          {
            ret++;
          }
        }
      }
      return ret;
    }
public int countYZ(字符串str){
//初始化返回整数
int-ret=0;
//如果它至少有2个字符,我们检查两端以查看有多少匹配实例。
如果(str.length()>=2)
{
如果(!Character.isLetter(str.charAt(1))&&(str.charAt(0)='y'| | str.charAt(0)='y'| | str.charAt(0)='z'| | str.charAt(0)='z'))
{
ret++;
}
如果(Character.islet(str.charAt(str.length()-2))和&(str.charAt(str.length()-1)='y'| | str.charAt(str.length()-1)='y'| | str.charAt(str.length()-1)='z'| | str charAt(str length()-1)='z'))
{
ret++;
}
}
//如果超过3个字符,我们使用for循环检查中间部分。
如果(str.length()>=3)
{
对于(int i=2;i
以下是我所做的:

public int countYZ(String str) {
      //Initialize a return integer
      int ret = 0;
      //If it has at least 2 characters, we check both ends to see how many matching instances we have.
      if (str.length() >= 2)
      {
        if (!Character.isLetter(str.charAt(1)) && (str.charAt(0) == 'y' || str.charAt(0) == 'Y' || str.charAt(0) == 'z' || str.charAt(0) == 'Z')) 
        {
          ret++;
        }
        if (Character.isLetter(str.charAt(str.length() - 2)) && (str.charAt(str.length()-1) == 'y' || str.charAt(str.length()-1) == 'Y' || str.charAt(str.length()-1) == 'z' || str.charAt(str.length()-1) == 'Z')) 
        {
          ret++;
        }
      }
      //If it has more than 3 characters, we check the middle using a for loop.
      if (str.length() >= 3)
      {
        for (int i = 2; i < str.length(); i++)
        {
          char testOne = str.charAt(i-2);
          char testTwo = str.charAt(i-1);
          char testThree = str.charAt(i);
          //if the first char is a letter, second is a "YZyz" char, and the third is not a letter, we increment ret by 1.
          if (Character.isLetter(testOne) && (testTwo == 'y' || testTwo == 'Y' || testTwo == 'z' || testTwo == 'Z') && (!Character.isLetter(testThree)))
          {
            ret++;
          }
        }
      }
      return ret;
    }
public int countYZ(字符串str){
//初始化返回整数
int-ret=0;
//如果它至少有2个字符,我们检查两端以查看有多少匹配实例。
如果(str.length()>=2)
{
如果(!Character.isLetter(str.charAt(1))&&(str.charAt(0)='y'| | str.charAt(0)='y'| | str.charAt(0)='z'| | str.charAt(0)='z'))
{
ret++;
}
如果(Character.islet(str.charAt(str.length()-2))和&(str.charAt(str.length()-1)='y'| | str.charAt(str.length()-1)='y'| | str.charAt(str.length()-1)='z'| | str charAt(str length()-1)='z'))
{
ret++;
}
}
//如果超过3个字符,我们使用for循环检查中间部分。
如果(str.length()>=3)
{
对于(int i=2;i
public int countYZ(字符串str){
整数计数=0;
如果(str.charAt(str.length()-1)='z'||
str.charAt(str.length()-1)='y'||
str.charAt(str.length()-1)='Z'||
str.charAt(str.length()-1)='Y'){
计数+=1;
}
对于(int i=0;i0){
if(!(Character.isleter(str.charAt(i))){
如果(str.charAt(i-1)='y'||
str.charAt(i-1)='z'||
str.charAt(i-1)='Y'||
str.charAt(i-1)='Z'){
计数+=1;
}
}
}
}
返回计数;
}
public int countYZ(字符串str){
整数计数=0;
如果(str.charAt(str.length()-1)='z'||
str.charAt(str.length()-1)='y'||
str.charAt(str.length()-1)='Z'||
str.charAt(str.length()-1)='Y'){
计数+=1;
}
用于(int i)