到目前为止我所拥有的:
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;
}
}
}
请原谅任何低效率;一般而言,编码仍然相对较新。我是否在使用运算符和.charAt()方面缺乏一些知识?这不合逻辑吗?或者我的错误在其他地方?
答案 0 :(得分:3)
您可以按照以下步骤操作:
(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;
}
答案 1 :(得分:3)
使用正则表达式:
return str.matches("^(.)\\1*$");
使用流:
str.chars().allMatch(c -> c == str.charAt(0));
其他:
return str.replace(String.valueOf(str.charAt(0), "").length() == 0;
答案 2 :(得分:2)
正如安德鲁所说,你在for循环中正在减少i
。您可以通过将其更改为int charb4 = i - 1;
来解决此问题。至于使您的代码更有效,您可以将其浓缩为此。
public boolean allSameLetter(String str) {
for(char c : str.toCharArray())
if(c != str.charAt(0)) return false;
return true;
}
答案 3 :(得分:1)
评论,如果你不理解其中的一部分:)
public boolean allSameLetter(String str)
{
for (int i = 1; i < str.length() -1; i++)
{
if ( str.charAt(i) != str.charAt(i+1))
{
return false;
}
}
return true
}
-1是因为我正在检查数组中的当前值,然后检查数组中的下一个值,因此我需要提前停止一个位置。
如果永远不会输入循环if语句,它将使代码足够远以返回true
答案 4 :(得分:0)
您必须创建一个用于搜索String-1长度的for循环。这样,由于程序试图获取第4个字母,因此该程序不会因3个字母而崩溃。这对我有用:
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;
}
答案 5 :(得分:0)
var array2 = [3.9, 7.7, 11.1, 1.11, 1.02, 3.3, 3.9, 0]
let pointer2 = UnsafeMutablePointer<Double>.allocate(capacity: array.count)
pointer2.initialize(from: &array, count: array.count)
print(Array(pointer: pointer2, count: array.count))
这应该足够了
答案 6 :(得分:-1)
错误是由
引起的global main
extern printf
section .data
gwiazdka db '*',10,0 ;HERE is my question
section .text
main:
mov rbx, 0
petla:
mov rdi, qword gwiazdka
mov rsi, rbx
mov rax, 0
call printf
inc rbx
cmp rbx, 4
jne petla
mov rax, 1
int 80h
此行等于
nasm -f elf64 program.asm
gcc program.o -o program
./program
因此,你的循环永远不会停止。
解决此问题的最简单方法
int charb4 = i--;