在字符串java

时间:2015-10-20 00:53:14

标签: java

我试图找到一种方法,使输入的字符串的元音在计算其中的元音后变为大写。

import java.util.*;
public class Main {

public static void main(String[] args) {
    //        Vowels test = new Vowels();   //comment out this line
    System.out.println("enter a string"); //Says enter String
    Scanner kb = new Scanner(System.in);  //Com reads the input
    String str = kb.nextLine();     // this is the String variable to the input
  //  char vowel = str.charAt(p);
    int count = 0;          //this counts thee vowels
    for(int p = 0; p<str.length(); p++)         // p is the looping for the char vowel
        {
            char vowel = str.charAt(p);
                                                    //.Character.toUppercase(); //Character.toUpperCase doesn't work so much here... 
                                        //  char vOwEl = Character.toUpperCase(vowel); //Adding a new char doesnt work either
            switch (vowel)
            {/* I forget the single quotes here...*/
            case 'a':
               // a-=32;
                /*Character.toUpperCase('a');
                count++;
                break;//didn't work...*/
            case 'e':
               // e-=32;
                /*Character.toUpperCase('e');
                count++;
                break; */
            case 'i':
                //i-=32;
               /* Character.toUpperCase('i');
                count++;
                break;*/
            case 'o':
               // o-=32;
               /* Character.toUpperCase('o');
                count++;
                break;*/
            case 'u':
                //u-=32;
                //Character.toUpperCase('u');
                count++;
                                                             //System.out.println("There are "+count+"vowels in the string: "+str);
                break;
            default:
                                                             //System.out.println("There is no vowels.");
                                                             // no code since it will print out "there is no vowels" a number of times
            }
        }
        System.out.println("There are "+count+" vowels in the string: "+str);


    //        test.countVowels(str);    //comment out this line
}
}

2 个答案:

答案 0 :(得分:1)

String是不可变的。我会使用StringBuilder。我希望if更复杂switch语句。另外,我最后使用格式化输出。像,

System.out.println("enter a string");
Scanner kb = new Scanner(System.in);
String str = kb.nextLine();
int count = 0;
StringBuilder sb = new StringBuilder();
for (char ch : str.toCharArray()) {
    char t = Character.toUpperCase(ch);
    if (t == 'A' || t == 'E' || t == 'I' || t == 'O' || t == 'U') {
        sb.append(t);
        count++;
    } else {
        sb.append(ch);
    }
}
System.out.printf("There are %d vowels in the string: %s%n", count,
        sb.toString());

答案 1 :(得分:1)

  • 使用StringBuilder存储和修改您想要的位置的字符。
  • 使用Character类将字符转换为大写/小写

例如

System.out.println("enter a string"); //Says enter String
Scanner kb = new Scanner(System.in);  //Com reads the input
String str = kb.nextLine();     // this is the String variable to the input
int count = 0;          //this counts thee vowels
StringBuilder result = new StringBuilder(str.toLowerCase());
for (int p = 0; p < str.length(); p++) // p is the looping for the char vowel
{
    char vowel = str.charAt(p);
    switch (vowel) {/* I forget the single quotes here...*/

        case 'a':
        case 'e':
        case 'i':
        case 'o':
        case 'u':
            result.setCharAt(p, Character.toUpperCase(vowel));
            count++;
            break;
    }
}

str = result.toString();
System.out.println("There are " + count + " vowels in the string: " + str);