我的家庭作业存在这个问题(我老实说,至少不要试图隐藏它) 我在弄清楚如何做到这一点时遇到了问题。
给出以下声明:String phrase =“WazzUp? - 谁是第一个??? - IDUNNO”;写下必要的代码 计算字符串中的元音数量并将相应的消息打印到屏幕上。
这是我到目前为止的代码:
String phrase = " WazzUp ? - Who's On FIRST ??? - IDUNNO";
int i, length, vowels = 0;
String j;
length = phrase.length();
for (i = 0; i < length; i++)
{
j = phrase.substring(i, i++);
System.out.println(j);
if (j.equalsIgnoreCase("a") == true)
vowels++;
else if (j.equalsIgnoreCase("e") == true)
vowels++;
else if (j.equalsIgnoreCase("i") == true)
vowels++;
else if (j.equalsIgnoreCase("o") == true)
vowels++;
else if (j.equalsIgnoreCase("u") == true)
vowels++;
}
System.out.println("Number of vowels: " + vowels);
但是,当我运行它时,它只会产生一堆空行。有人可以帮忙吗?
答案 0 :(得分:9)
phrase.substring(i, i++);
应为phrase.substring(i, i + 1);
。
i++
给出i
的值,然后将其加1。正如您现在所做的那样,String j
实际上是phrase.substring(i, i);
,它始终是空字符串。
您不需要在i
循环体中更改for
的值,因为它已在for (i = 0; i < length; i++)
中递增。
答案 1 :(得分:9)
我认为不需要在循环中使用print语句。
String s = "Whatever you want it to be.".toLowerCase();
int vowelCount = 0;
for (int i = 0, i < s.length(); ++i) {
switch(s.charAt(i)) {
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
vowelCount++;
break;
default:
// do nothing
}
}
这会将字符串转换为小写,并检查字符串中的所有字符是否为元音。
答案 2 :(得分:8)
这可能/应该是一个单行
System.out.println("the count of all vowels: " + (phrase.length() - phrase.replaceAll("a|e|i|o|u", "").length()));
及其仅字符串方法
答案 3 :(得分:4)
改进上述答案以考虑大写字母中的元音:
System.out.println(s.length() - s.toLowerCase().replaceAll("a|e|i|o|u|", "").length());
答案 4 :(得分:0)
i ++在使用之后增加i,所以你实际上是在说string.substring(i,i)。由于结束标记是独占的,因此将始终返回空字符串。一个简单的解决方法是将其更改为
j = phrase.substring(i, ++i);
希望有所帮助!
答案 5 :(得分:0)
使用集合:
String word = "busiunesuse";
char[] wordchar= word.toCharArray();
Character allvowes[] ={'a','e','i','o','u'};
Map<Character, Integer> mymap = new HashMap();
for(Character ch: wordchar)
{
for(Character vowels : allvowes)
{
if(vowels.equals(ch))
{
if(mymap.get(ch)== null)
{
mymap.put(ch, 1);
}
else
{
int val = mymap.get(ch);
mymap.put(ch, ++val);
}
}
}
}
Set <Character> myset = mymap.keySet();
Iterator myitr = myset.iterator();
while(myitr.hasNext())
{
Character key = (Character) myitr.next();
int value = mymap.get(key);
System.out.println("word:"+key+"repetiotions:"+value);
}
}
}
答案 6 :(得分:0)
我知道这是一个旧的修改, 但是我认为最好使用元音和数组:
public static void main(String[] args) {
String phrase = " WazzUp ? - Who's On FIRST ??? - IDUNNO".toLowerCase();
int vowels = 0;
String[] array = {"a", "e", "i", "o", "u"};
for (int i = 0; i < phrase.length(); i++) {
String j = phrase.substring(i, i + 1);
System.out.println(j);
for (int n = 0; n < array.length; n++) {
if (j.equals(array[n])) {
vowels++;
}
}
}
System.out.println("Number of vowels: " + vowels);
}
答案 7 :(得分:0)
要计算字符串中的元音数量:
class Test {
static int a;
public static String countVowel(String strName) {
char ch[] = strName.toCharArray();
for(int i=0; i<ch.length; i++) {
switch(ch[i]) {
case 'a':
a++;
break;
case 'e':
a++;
break;
case 'i':
a++;
break;
case 'o':
a++;
break;
case 'u':
a++;
break;
}
}
strName = String.valueOf(a);
return strName;
}
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.print(countVowel(s.nextLine()));
}
}
答案 8 :(得分:0)
我知道我有点晚了,但如果他们使用口音,这个回复也许可以帮助其他人在未来工作
为了避免出现问题,我们可以使用 Normalizer 将输入文本规范化为 NFD,它将重音(例如:元音变音、重音符、重音、抑扬符等)在字母和重音中分开。
示例: "schön" ----NFD----> "scho\u0308n"
解决办法是
Normalizer
对文本进行标准化,并使用 (replaceAll
) 替换重音符号import java.text.Normalizer;
public class Main {
private static String str = "This ïs a téxt with vòwêls";
public static void main(String[] args) {
// Normalizing the text
// Replacing all the accents
// Convert to lowercase
String text = Normalizer.normalize(str, Normalizer.Form.NFD)
.replaceAll("[\\u0300-\\u036f]", "")
.toLowerCase();
// We replace everything but vowels
int vowels_count = text.replaceAll("[^aeiou]", "").length();
System.out.printf("%s%s%s %d %s",
"\nThe text \"",
str,
"\" has",
vowels_count,
"vowels"
);
}
}
答案 9 :(得分:-1)
public class JavaApplication2 {
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws IOException {
// TODO code application logic here
System.out.println("Enter some text");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine().toLowerCase();
char[] vowel = new char[]{'a', 'e', 'i', 'o', 'u'};
int[] countVowel = new int[5];
for (int j = 0; j < input.length(); j++) {
char c =input.charAt(j);
if(c=='a')
countVowel[0]++;
else if(c=='e')
countVowel[1]++;
else if(c=='i')
countVowel[2]++;
else if(c=='o')
countVowel[3]++;
else if(c=='u')
countVowel[4]++;
}
for (int i = 0; i <countVowel.length; i++) {
System.out.println("Count of vowel " + vowel[i] + "=" + countVowel[i]);
}
}
}