'错误:预期'在创建开关时

时间:2017-07-19 19:01:53

标签: java switch-statement

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

我想过这样做:

  • 首先,我创建一个for循环来遍历String语句的每个字符。
  • 然后我在for循环中放了if语句,检查c(声明为statement.charAt(i))是否为元音。
  • 如果c是元音,我使用开关将该特定元音的计数增加1,然后中断。
  • 如果c不是元音,则会将其添加到辅音计数中。
  • 完成for循环后,会打印每个字符的计数。

交换机是我遇到问题的地方。案例'a'和案例'e'不会导致错误,但案例'i''u'会导致错误('Error: : Expected')。 我不明白这意味着什么或为什么,因为案例'i''u'的编写方式与案例'a''e'相同。有人可以帮助我吗?

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

很抱歉,如果这篇文章格式不正确,我是Stack Overflow的新手。

1 个答案:

答案 0 :(得分:0)

你的代码中有很多错误,我修改了它(在底部发布)并指出了你的一些错误:

  1. statement = scan.nextString().toLowerCase();更改为statement = scan.nextLine().toLowerCase();

  2.   

    我不明白这意味着什么或为什么,因为案例&#39;我&#39;通过&#39; u&#39;用与案例相同的方式编写&#39; a&#39;和&#39;。

  3. 您的切换错误,因为案例iou有一个分号(;)而不是冒号(:) 。只是那个小差异导致那里的错误。将您的switch声明更改为:

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

    这是您修改后的代码。现在它是正确的,它有效:

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

    您可能已经注意到一些更改,例如删除检查元音的if语句。我没有做所有这些,而是​​添加了一个默认案例。如果其他条件都不成立,则执行default情况中的任何条件。我还初始化了您的变量vowelavowelevoweli等,而不是vowela += 1我只是将其更改为vowela++,这会产生相同的效果(与其他字母相同)。