Java 如果字符串中的所有字母都相同,则尝试返回true
到目前为止,我所拥有的:Java 如果字符串中的所有字母都相同,则尝试返回true,java,char,operators,Java,Char,Operators,到目前为止,我所拥有的: public boolean allSameLetter(String str) { for (int i = 1; i < str.length(); i++) { int charb4 = i--; if ( str.charAt(i) != str.charAt(charb4)) { return false; } if ( i == str.le
public boolean allSameLetter(String str)
{
for (int i = 1; i < str.length(); i++)
{
int charb4 = i--;
if ( str.charAt(i) != str.charAt(charb4))
{
return false;
}
if ( i == str.length())
{
return true;
}
}
}
public boolean allSameLetter(String str)
{
对于(int i=1;i
请原谅任何低效(如有);一般来说,编码还是比较新的。我是否缺乏将运算符和.charAt()一起使用的知识?这不合逻辑吗?还是我的错误在其他地方?如果你不理解其中的一部分,请发表评论:)
public boolean allSameLetter(String str)
{
对于(int i=1;i
-1存在,因为我正在检查数组中的当前值,然后是数组中的下一个值,因此我需要提前停止一个位置
如果从未输入loop If语句,它将在代码中占据足够的位置,如果您不理解其中的一部分,它将返回true(注释:)
public boolean allSameLetter(String str)
{
对于(int i=1;i
-1存在,因为我正在检查数组中的当前值,然后是数组中的下一个值,因此我需要提前停止一个位置
如果从未输入loop If语句,它将使其在代码中足够远,以返回true,正如Andrew所说,您在for循环中减少了
i
。您可以将其更改为intcharb4=i-1代码>。至于让你的代码更有效率,你可以把它浓缩成这样
public boolean allSameLetter(String str) {
for(char c : str.toCharArray())
if(c != str.charAt(0)) return false;
return true;
}
正如Andrew所说,您正在for循环中减少i
。您可以将其更改为intcharb4=i-1代码>。至于让你的代码更有效率,你可以把它浓缩成这样
public boolean allSameLetter(String str) {
for(char c : str.toCharArray())
if(c != str.charAt(0)) return false;
return true;
}
您可以按照以下步骤操作:
(1) 获取第一个字符(即第0个索引)
(2) 检查第一个字符是否与后续字符相同,如果不返回false
(并从方法中出来)
(3) 如果所有字符都匹配,即处理一直进行到方法结束并返回true
public boolean allSameLetter(String str) {
char c1 = str.charAt(0);
for(int i=1;i<str.length;i++) {
char temp = str.charAt(i);
if(c1 != temp) {
//if chars does NOT match,
//just return false from here itself,
//there is no need to verify other chars
return false;
}
}
//As it did NOT return from above if (inside for)
//it means, all chars matched, so return true
return true;
}
public boolean allSameLetter(String str){
字符c1=str.charAt(0);
对于(int i=1;i,您可以按照以下步骤操作:
(1) 获取第一个字符(即第0个索引)
(2) 检查第一个字符是否与后续字符相同,如果不返回false
(并从方法中出来)
(3) 如果所有字符都匹配,即处理一直进行到方法结束并返回true
public boolean allSameLetter(String str) {
char c1 = str.charAt(0);
for(int i=1;i<str.length;i++) {
char temp = str.charAt(i);
if(c1 != temp) {
//if chars does NOT match,
//just return false from here itself,
//there is no need to verify other chars
return false;
}
}
//As it did NOT return from above if (inside for)
//it means, all chars matched, so return true
return true;
}
public boolean allSameLetter(String str){
字符c1=str.charAt(0);
对于(inti=1;i而言,错误是由
int charb4 = i--;
这条线等于
int charb4 = i-1;
i=i-1;
因此,您的循环将永远不会停止。
解决这个问题的最简单方法
public boolean allSameLetter(String str)
{
for (int i = 1; i < str.length(); i++)
{
if ( str.charAt(i) != str.charAt(i-1))
{
return false;
}
}
}
public boolean allSameLetter(String str)
{
对于(int i=1;i
该错误是由
int charb4 = i--;
这条线等于
int charb4 = i-1;
i=i-1;
因此,您的循环将永远不会停止。
解决这个问题的最简单方法
public boolean allSameLetter(String str)
{
for (int i = 1; i < str.length(); i++)
{
if ( str.charAt(i) != str.charAt(i-1))
{
return false;
}
}
}
public boolean allSameLetter(String str)
{
对于(int i=1;i
您必须创建一个for循环来搜索字符串-1的长度。这样,程序不会因为3个字母的单词而崩溃,而程序会试图获取第4个字母。这对我来说是有效的:
public boolean allSameLetter(String str)
{
for(int i = 0; i< str.length()-1; i++){
if (str.charAt(i) != str.charAt(i+1)){
return false;
}
}
return true;
}
public boolean allSameLetter(String str)
{
对于(int i=0;i
您必须创建一个for循环来搜索字符串-1的长度。这样,程序不会因为3个字母的单词而崩溃,而程序会试图获取第4个字母。这对我来说是有效的:
public boolean allSameLetter(String str)
{
for(int i = 0; i< str.length()-1; i++){
if (str.charAt(i) != str.charAt(i+1)){
return false;
}
}
return true;
}
public boolean allSameLetter(String str)
{
对于(int i=0;i
使用正则表达式:
return str.matches("^(.)\\1*$");
使用流:
str.chars().allMatch(c -> c == str.charAt(0));
其他:
return str.replace(String.valueOf(str.charAt(0), "").length() == 0;
使用正则表达式:
return str.matches("^(.)\\1*$");
使用流:
str.chars().allMatch(c -> c == str.charAt(0));
其他:
return str.replace(String.valueOf(str.charAt(0), "").length() == 0;
if((新HashSet(Arrays.asList(s.toCharArray()))).size()=1)
返回true;
返回false;
如果((新的HashSet(Arrays.asList(s.toCharArray()))).size()=1),这应该足够了
返回true;
返回false;
这应该足够了你到底想实现什么?比较两个字符串?一件事:完整地命名变量,不要缩写它们。你在减少i
,所以你进入了一个无限循环……让代码检查字符串是否由相同的字母组成。(即“aaa”、“oooo”、“ddddd”)相关帖子-你到底想实现什么?比较两个字符串?一件事:完整地命名变量,不要缩写它们。你正在减少i
,因此你进入一个无限循环…让代码检查字符串是否由相同的字母组成。(即“aaa”、“oooo”、“ddddd”)相关帖子-可以提高效率,但我选择保留代码是为了帮助您。没问题:)可以提高效率,但我选择保留代码是为了帮助您。没问题:)你能解释一下第一个正则表达式吗?你能解释一下第一个正则表达式吗?解释会很有帮助。此外,你的答案似乎与提问者的技能水平不匹配。解释会很有帮助。此外,你的答案似乎与提问者的技能水平不匹配。