2017-07-19 11 views
-1
import java.util.Scanner; 

public class lab05a 
{ 
    public static void main (String[] args) 
    { 
    String statement; 

    Scanner scan = new Scanner(System.in); 
    int vowela; 
    int vowele; 
    int voweli; 
    int vowelo; 
    int vowelu; 
    int nonvowel; 

    int vowela = 0; 
    int vowele = 0; 
    int voweli = 0; 
    int vowelo = 0; 
    int vowelu = 0; 

    statement = scan.nextString(); 
    statement = statement.toLowerCase(); 

    for (int i = 0; i <= statement.length(); count++) 
    { 
     char c = examplestring.charAt(i); 
     if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u') 
     switch (c) 
     { 
     case 'a': 
      vowela += 1; 
      break; 
     case 'e': 
      vowele += 1; 
      break; 
     case 'i'; 
      voweli += 1; 
      break; 
     case 'o'; 
      vowelo += 1; 
      break; 
     case 'u'; 
      vowelu += 1; 
      break; 
     } 
     else 
     nonvowel +=1; 
    } 
     System.out.prinln("a: " + vowela); 
     System.out.prinln("e: " + vowele); 
     System.out.prinln("i: " + voweli); 
     System.out.prinln("o: " + vowelo); 
     System.out.prinln("u: " + vowelu); 
     System.out.prinln("nonvowel: " + novowel); 
    } 
} 

Ich dachte, es auf diese Art und Weise tun:‚Fehler: Erwartete‘, wenn der Schalter zu schaffen

  • Zunächst erstelle ich eine for Schleife durch jedes Zeichen von String-Anweisung zu wiederholen.
  • Dann habe ich eine if Anweisung in die for-Schleife, die überprüft, ob c (als statement.charAt(i) deklariert) ist ein Vokal.
  • Wenn c ein Vokal ist, verwende ich einen Schalter, um die Zählung für diesen bestimmten Vokal um eins zu erhöhen und dann zu brechen.
  • Wenn c kein Vokal ist, wird er zur Anzahl der Konsonanten addiert.
  • Nachdem die for-Schleife fertig ist, wird die Anzahl der Zeichen ausgedruckt.

Der Schalter ist, wo ich Probleme mit bin. Der Fall 'a' und der Fall 'e' haben keine Fehler verursacht, aber die Fälle 'i' bis 'u' verursachen einen Fehler ('Error: : Expected'). Ich verstehe nicht, was das bedeutet oder warum, wie Fälle 'i' bis 'u' sind auf die gleiche Weise wie Fälle 'a' und 'e' geschrieben. Kann mir jemand helfen?

3 errors found: 
[line: 38] Error: : expected 
[line: 41] Error: : expected 
[line: 44] Error: : expected 

Sorry, wenn dieser Beitrag schlecht formatiert ist: Ich bin Überlauf zu stapeln.

+4

Bitte keine Screenshots des Codes. [Bearbeiten Sie Ihre Frage] (https://stackoverflow.com/posts/45199020/edit) und [formatieren Sie Ihren Code] (https://stackoverflow.com/editing-help). – tnw

+0

'statement = scan.nextString(). ToLowerCase();' sollte 'statement = scan sein.next(). toLowerCase(); ' – CodingNinja

+0

Tut mir leid, ich versuche es zu bearbeiten und das Format zu beheben, aber ich habe Probleme damit. – Holopleather

Antwort

0

Es gibt viele Fehler im Code, ich habe es geändert (unten geschrieben) und zeigte einige Ihrer Fehler aus:

  1. ändern statement = scan.nextString().toLowerCase(); zu statement = scan.nextLine().toLowerCase();

  2. I don't understand what this means or why, as cases 'i' through 'u' are written the same way as cases 'a' and 'e'.

Ihr Switch ist falsch, weil die Fälle i, o und u ein Semikolon haben (;) anstelle eines Doppelpunkts (:). Nur dieser kleine Unterschied verursacht den Fehler dort. Ändern Sie Ihre switch Erklärung dazu:

switch(c) { 
     case 'a': 
      vowela++; 
      break; 
     case 'e': 
      vowele++ 
      break; 
     case 'i': 
      voweli++ 
      break; 
     case 'o': 
      vowelo++ 
      break; 
     case 'u': 
      vowelu++; 
      break; 
    } 

Hier ist Ihr modifizierten Code. Nun ist es richtig, und es funktioniert:

import java.util.Scanner; 

public class lab05a { 

    public static void main (String[] args) { 
     String statement; 
     Scanner scan = new Scanner(System.in); 
     int vowela = 0; 
     int vowele = 0; 
     int voweli = 0; 
     int vowelo = 0; 
     int vowelu = 0; 
     int nonvowel = 0; 
     statement = scan.nextLine().toLowerCase(); 
     for (int i = 0; i < statement.length(); i++) { 
      char c = statement.charAt(i); 
      switch (c) { 
       case 'a': 
        vowela++; 
        break; 
       case 'e': 
        vowele++; 
        break; 
       case 'i': 
        voweli++; 
        break; 
       case 'o': 
        vowelo++; 
        break; 
       case 'u': 
        vowelu++; 
        break; 
       default: 
        nonvowel++; 
        break; 
      } 
     } 

     System.out.println("a: " + vowela); 
     System.out.println("e: " + vowele); 
     System.out.println("i: " + voweli); 
     System.out.println("o: " + vowelo); 
     System.out.println("u: " + vowelu); 
     System.out.println("nonvowel: " + nonvowel); 
    } 
} 

Sie können einige Änderungen bemerkt, wie das Entfernen der if Anweisung, die für einen Vokal prüft. Anstatt all das zu tun, habe ich nur einen Standardfall hinzugefügt. Wenn keine der anderen Bedingungen zutrifft, wird das ausgeführt, was im Fall default ausgeführt wird. Ich initialisierte auch Ihre Variablen vowela, vowele, voweli, etc., und anstatt vowela += 1 zu tun, änderte ich es nur zu vowela++, die den gleichen Effekt produziert (gleich mit den anderen Buchstaben).

+0

Danke Tommy Ich denke, ich bin jetzt auf dem richtigen Weg. – Holopleather

Verwandte Themen