0

配列内の特定の単語に対して、連続する子音の最大数を見つけようとしています。コメントした途中にwhileループがありますが、何らかの理由で実行されません。誰かが理由を知っていますか?また、String[] 単語のサブ配列を見つけようとしているため、int スペースがあることに気付くかもしれません。どうすればそれを行うことができますか?

import java.io.*;
import java.util.*
import java.util.Arrays;

public class Main
{
  public static void main (String[] args) 
  {
    System.out.print("Please enter a phrase to translate: ");
    Scanner scan = new Scanner(System.in);
    String str = scan.nextLine();  
    String[] words = str.split("\\s+");
    int spaces = (word.length - 1);
    for (int i = 0; i < words.length; i++)
    {
        String a = words[i].substring(0,1);
        int k = a.length();
        int n = words[i].length();
        if (!(a.contains("a") || a.contains("e") || a.contains("i") || a.contains("o") || a.contains("u")))
        {
            while (k < 5) // start while  
            {
                if (n > k)
                {
                    a = words[i].substring(0,k);
                    k = k + 1;
                    }
                }
            } // end while
        if (words[i].startsWith("a") || words[i].startsWith("e") || words[i].startsWith("i") || words[i].startsWith("o") || words[i].startsWith("u"))
        {
            System.out.print(words[i] + "way");
            }
        else if (!(a.contains("a") || a.contains("e") || a.contains("i") || a.contains("o") || a.contains("u")))
        {
            String answer = words[i].substring(k,n);
            System.out.print(answer + a + "ay");
            }
        }
    }
}
4

1 に答える 1

0

「配列内の特定の単語に対して、行内の子音の最大数を見つけようとしている」という説明を考えると、これらの行に沿ったもの(コンパイルもテストもされていません-アプローチを示すためだけに)は、はるかに簡単になると思いますfollow/debug/test/maintain (また、現在のみを調べword[i]ます。単語を反復処理するための外側のループが必要です。

String consgroups[] = word[i].split("[aeiou]"); // split on all vowels
int maxlen = consgroups[0].length, maxidx = 0;
for (int j = ; j < consgroups.length; ++j)    // iterate over groups and find max
  if (consgroups[j].length > maxlen)
  { maxidx = j;
    maxlen = consgroups[i].length;
  }

豚ラテン語についてのあなたのコメントを考えると、単語の先頭以外の子音グループが重要な理由がわかりませんが、おそらくあなたの説明を誤解しています...

編集:もう少し詳しく見てきたので、このアプローチがより便利かもしれないと思います:

String vowels = "aeiou";
int i = 0;
while ((i < word.length) && (!vowels.contains(word.subSequence(i, i + 1))))
  ++i;
// now word[i] is the first non-vowel character in word
if (i == word.length) // word was all consonants
{ ...
}
else
  if (i) // word has a consonant prefix
  { ...
  }
  else // word starts with a vowel
  { ...
  }
于 2013-07-22T18:46:08.253 に答える