このプログラムは学校向けに書いたもので、ほとんど動作しますが、1 つ問題があります。プログラムの目標は、入力された文字列を取得し、母音で始まる入力内の各単語から新しい文字列を作成することです。
例:
入力:It is a hot and humid day.
出力:Itisaand.
ドライバーは次のとおりです。
public class Driver {
public static void main(String[] args) {
Scanner console = new Scanner(System.in);
System.out.print("Input: ");
String input = console.nextLine();
Class strings = new Class(input);
int beg=0;
for(int j=0;j<input.length();j++)
{
if(strings.isVowel(j)&&(j==0||input.charAt(j-1)==' '))
beg=j;
else if(strings.endWord(j)&&(beg==0||input.charAt(beg-1)==' '))
{
strings.findWord(beg, j);
}
}
System.out.print("Output: ");
strings.printAnswer();
}
}
そして、ここにクラスがあります:
public class Class {
String input="",answer="";
public Class(String input1)
{
input = input1;
}
public boolean isVowel(int loc)
{
return (input.charAt(loc)=='U'||input.charAt(loc)=='O'||input.charAt(loc)=='I'||input.charAt(loc)=='E'||input.charAt(loc)=='A'||input.charAt(loc)=='a'||input.charAt(loc)=='e'||input.charAt(loc)=='i'||input.charAt(loc)=='o'||input.charAt(loc)=='u');
}
public boolean endWord(int loc)
{
return (input.charAt(loc)==' '||input.charAt(loc)=='.'||input.charAt(loc)=='?'||input.charAt(loc)=='!');
}
public void findWord(int beg,int end)
{
answer = answer+(input.substring(beg,end));
}
public void printAnswer()
{
System.out.println(answer+".");
}
}
このコードを使用すると、次の出力が得られます。
Itisaa hotandand humidand humid summerand humid summer day.
このコードを削除すると:
&& (j == 0 || input.charAt(j-1) == ' ')
適切な出力が得られますが、入力された単語に複数の母音が含まれていると機能しません。
例えば:
入力:Apples and bananas.
出力:and.
誰かが説明してもらえますか:
a) コードが子音で始まる単語をそのまま出力している理由と、
b) どうすれば修正できるか。
また、私が書いたクラスのメソッドは変更できません。