2015-10-20 33 views
-2

我想找到一种方法来使得输入字符串的元音在计入元音后变成大写。在字符串中大写元音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

你有什么问题? –

+0

你的代码绝对没有错,它计算元音。 – ergonaut

回答

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()); 
+0

这可能是个人选择,但考虑到可能值的范围有限,“switch”语句可能稍微容易阅读,然后是“if”语句,但这只是我;) – MadProgrammer

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);