我为学校编写了这个程序,它几乎可以工作,但是有一个问题。该程序的目标是获取输入的字符串,并从输入中以元音开头的每个单词创建一个新字符串。
例子:
输入: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)我该如何解决它。
另外,我编写的类中的方法不能更改。