我正在尝试编写一个程序来搜索出现在旁边的双字符。 我的逻辑怎么都行不通。我该如何解决这个问题。
Example word like 'apple' 'hello'
预期输出此+字+将包含双字母
System.out.println("Enter word: ");
Scanner scanner = new Scanner(System.in);
String word = scanner.nextLine();
int i = 0;
for (i = 1; i < word.length(); i++) {
if (word[i] == word[i + 1]) {
System.out.println("word contain double letter");
} else {
System.out.println("normal word found");
}
}
答案 0 :(得分:3)
你几乎就在那里,你的代码有2个问题:
.charAt(int index)
方法而不是您接近它的方式(这可以在C#中使用)。因此,您的代码将无法编译。循环逻辑中存在轻微错误:循环应从0
开始,到.length - 1
结束。根据以下代码进行这些更改应该有效:不执行此更改将导致IndexOutofBoundsException
。
System.out.println("Enter word: ");
Scanner scanner = new Scanner(System.in);
String word = scanner.nextLine();
int i = 0;
for (i = 0; i < word.length() - 1; i++)
{
if (word.charAt(i) == word.charAt(i + 1))
{
System.out.println("word contain double letter");
} else
{
System.out.println("normal word found");
}
}
答案 1 :(得分:1)
由于您希望循环遍历数组,因此可以使用toCharArray()
方法将String
作为char[]
数组:
char[] arr = word.toCharArray();
然后循环它。您还希望有一个标志变量,以便在单词正常或有双字母时保留结果:
boolean hasDoubleLetter = false;
for (int i = 0; i < arr.length - 1; i++) {
if(arr[i] == arr[i+1]) {
hasDoubleLetter = true;
break;
}
}
然后根据结果(hasDoubleLetter
),打印相应的消息:
if (hasDoubleLetter) // true
System.out.println(...);
else
System.out.println(...);
注意,因为您使用的是arr[i+1]
,所以您必须遍历数组length - 1
,否则您将获得例外。
答案 2 :(得分:0)
System.out.println("Enter word: ");
Scanner scanner = new Scanner(System.in);
String word = scanner.nextLine();
for (int i = 0; i < word.length() - 1; i++) {
if (word.charAt(i) == word.charAt(i + 1)) {
System.out.println("word contain double letter");
} else {
System.out.println("normal word found");
}
}
答案 3 :(得分:0)
更简单的方法是让一组Character继续添加,如果该组的长度与Word的长度不同。你有重复的char。
答案 4 :(得分:0)
您无法使用字符串[i]
访问字符串中的字符尝试类似
的内容for (i = 1; i < word.length()-1; i++) {
if (word.charAt(i) == word.charAt(i+1)) {
System.out.println("word contain double letter");
} else {
System.out.println("normal word found");
}
}
答案 5 :(得分:0)
声明一个布尔值
使用word.charAt(i)
访问字符串
如果找到,请指定found=true;
最后检查布尔值并打印相应的消息。
System.out.println("Enter word: ");
Scanner scanner = new Scanner(System.in);
String word = scanner.nextLine();
int i = 0;
boolean found=false;
for (i = 0; i < word.length()-1; i++) {
if (word.charAt(i) == word.charAt(i+1)) {
found=true;
break;
}
}
if(found) {
System.out.println("word contain double letter");
}else
System.out.println("normal word found");