2012-12-05 10 views
7

मुझे होमवर्क के लिए यह समस्या है (मैं ईमानदार हूं, कम से कम इसे छिपाने की कोशिश नहीं कर रहा हूं) और मुझे यह पता लगाने में समस्याएं आ रही हैं कि इसे कैसे किया जाए।स्ट्रिंग में स्वरों को खोजने और गिनने के लिए स्ट्रिंग विधियों का उपयोग करें?

निम्नलिखित घोषणाओं को देखते हुए: स्ट्रिंग वाक्यांश = "वैज़अप? - पहले कौन है ??? - 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); 

हालांकि, जब मैं चलाने यह यह सिर्फ रिक्त लाइनों की एक गुच्छा बना देता है:

यहाँ कोड मैं अब तक राशि है। क्या कोई मदद कर सकता है?

+3

'String.char इस मामले में() '' String.substring() 'से अधिक आसान होगा। – NullUserException

+1

ऐसा लगता है कि स्विच कथन यहां लागू किया जा सकता है। स्विच करने के बजाय –

+0

स्वरों की एक सूची बनाने के लिए बेहतर है और फिर जांच करें कि list.contains (j) – Gaskoin

उत्तर

8

phrase.substring(i, i++);phrase.substring(i, i + 1); होना चाहिए।

i++i का मान देता है और फिर इसमें 1 जोड़ता है। तुम्हारे पास है के रूप में अभी, String j प्रभावी रूप से phrase.substring(i, i); जो हमेशा रिक्त स्ट्रिंग है,।

आप for पाश के शरीर में i का मान बदलने के लिए है, क्योंकि यह पहले से ही for (i = 0; i < length; i++) में वृद्धि की जाती है की जरूरत नहीं है।

+0

मैं जो पोस्ट करने जा रहा था, उससे काफी कुछ। सिवाय मुझे नहीं लगता कि आखिरी वृद्धि आवश्यक है। – Wes

+0

@Wes आप सही हैं। धन्यवाद। – irrelephant

+0

वाह, बहुत बहुत धन्यवाद! – xSpartanCx

0

i ++ increments के बाद मैं उपयोग किया गया है, इसलिए आप अनिवार्य रूप से string.substring (i, i) कह रहे हैं। चूंकि अंतिम चिह्न अनन्य है, यह हमेशा एक खाली स्ट्रिंग वापस कर देगा। एक आसान फिक्स सिर्फ

j = phrase.substring(i, ++i); 

आशा है कि मदद करता है!

+0

मुझे नहीं लगता कि एक वृद्धि ऑपरेटर या तो उपसर्ग या पोस्टफिक्स होना चाहिए। लेकिन हाँ यह जानने के लिए उपयोगी है कि उपसर्ग और पोस्टफिक्स ऑपरेटर क्या करते हैं। – Wes

8

मुझे लूप में प्रिंट स्टेटमेंट रखने की आवश्यकता नहीं दिखाई देती है।

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 
    } 
} 

यह स्ट्रिंग को लोअरकेस में परिवर्तित करता है, और स्वरों के लिए स्ट्रिंग में सभी वर्णों को जांचता है।

+5

प्रत्येक लूप पुनरावृत्ति में नया प्रेमी केस स्ट्रिंग क्यों बनाएं? लूप से पहले एक बनाना आईएमएचओ अधिक प्रभावी होगा। – Pshemo

+0

अच्छा बिंदु। अपडेट किया गया। – Whymarrh

+0

'.toLowercase()' गलत है, यह होना चाहिए '।toLowerCase() ' – MortalMan

-1

सार्वजनिक वर्ग 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]); 
     } 

    } 
} 
7

यह/एक एक लाइनर

System.out.println("the count of all vowels: " + (phrase.length() - phrase.replaceAll("a|e|i|o|u", "").length())); 

और उसके स्ट्रिंग केवल तरीकों

2

एक ऊपर जवाब पर में सुधार टोपी में स्वर विचार करने के लिए किया जाना चाहिए सकता है :

System.out.println(s.length() - s.toLowerCase().replaceAll("a|e|i|o|u|", "").length()); 
संबंधित मुद्दे

 संबंधित मुद्दे