Java ';o';未找到用户输入中的最后一个元音
我的程序假设每行检查一个单词的元音;然而,如果它是单词中的最后一个字母,或者如果元音是“o”,则不计算元音的大小。我已经盯着它看了好几个小时了。任何帮助都会很好Java ';o';未找到用户输入中的最后一个元音,java,string,if-statement,for-loop,while-loop,Java,String,If Statement,For Loop,While Loop,我的程序假设每行检查一个单词的元音;然而,如果它是单词中的最后一个字母,或者如果元音是“o”,则不计算元音的大小。我已经盯着它看了好几个小时了。任何帮助都会很好 import java.util.*; public class Vowel { public static void main(String[] args) { String word; int len; int position; int vowelCount
import java.util.*;
public class Vowel
{
public static void main(String[] args)
{
String word;
int len;
int position;
int vowelCount;
char ch;
Scanner kbd = new Scanner(System.in);
word = kbd.next();
while (!word.equals("the_end"))
{
len = word.length() - 1;
vowelCount = 0;
for (position = 0; position < len-1; position++)
{
ch = word.charAt(position);
if ((ch == 'a') || (ch == 'e') || (ch == 'i')
|| (ch == 'o') || (ch == 'u')) vowelCount++;
}
System.out.print("There ");
if (vowelCount == 1) System.out.print ("is 1 vowel in ");
else System.out.print("are " + vowelCount + " vowels in ");
System.out.println(word);
word = kbd.next();
}
}
}
import java.util.*;
公共类元音
{
公共静态void main(字符串[]args)
{
字符串字;
内伦;
内部位置;
int元音计数;
char ch;
扫描仪kbd=新扫描仪(System.in);
word=kbd.next();
而(!word.equals(“the_end”))
{
len=word.length()-1;
元音计数=0;
对于(位置=0;位置
我现在正试着用它
for (position = 0; position < word.length(); position++)
(位置=0;位置word = word.toLowerCase();
在您的
for
循环之前。您似乎希望迭代整个字符串,但是
len = word.length()-1;
...
for (position = 0; position < len-1; position++)
// ^^^ why?
假设你有一个六个字母的单词,“kitten”
。第一个字符的位置是0,因此您希望循环中的position
接受值0、1、2、3、4和5
您的代码实际执行的操作:
len = word.length()-1;
这将len
设置为5
for (position = 0; position < len-1; position++)
(位置=0;位置
由于len-1
是4,因此只要位置<4
,这将只运行循环。也就是说,只要位置
达到4,它就会退出(因为4<4
是false
)。因此position
将只接受值0、1、2、3。也就是说,你将在2点前离开
去掉上面代码中的
-1
将消除问题。仍然没有,我得到相同的结果。我想我试过了,然后又改回来了。@Jengo为我工作。你认为你试过了吗?还是你试过了?我试过“骨头”这个词,如果是元音,它不会算我的“o”或最后一个字母。我试过了,没有变化。@Jengo你一定没有按照我的建议做变化。在我看来,如果是元音,你的代码不会算单词的最后两个字母。因此,o
的问题可能在于你只给它一些像“劳动”这样的词。我在编辑之后(以及在退出之前)尝试了你的精确程序:骨头中有两个元音。这是正确的答案,对吗?不要这样编辑你的问题。它使答案过时。如果需要,请编辑并附加任何您不理解的新尝试。是的,当我键入bone时,我得到“bone中有0个元音”删除您编译的文件,然后重新编译以确保您没有仍然运行损坏的版本。此操作仍将关闭1。len
是从word.length()-1
创建的。它仍然是后面的一个字符。我也更改了它,仍然没有任何更改。@SotiriosDelimanolis我正在查看问题中的代码,我看不到您所指的len=word.length()-1
。@khelwood他们已经编辑过了。我重新编辑,至少显示了原始问题。我做到了。例如,单词“bone”将不计算“e”,因为它是最后一个字母。出于某种原因,它将计算“o”。
for (position = 0; position < word.length(); position++)
len = word.length()-1;
for (position = 0; position < len-1; position++)