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