Java搜索包含双字母的单词

时间:2014-02-05 05:31:46

标签: java

我正在尝试编写一个程序来搜索出现在旁边的双字符。 我的逻辑怎么都行不通。我该如何解决这个问题。

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");
        }
    }

6 个答案:

答案 0 :(得分:3)

你几乎就在那里,你的代码有2个问题:

  1. 在Java中,要访问字符,您需要使用.charAt(int index)方法而不是您接近它的方式(这可以在C#中使用)。因此,您的代码将无法编译。
  2. 循环逻辑中存在轻微错误:循环应从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");