【问题标题】:Phone Number Translator Error电话号码翻译错误
【发布时间】:2015-10-20 15:51:12
【问题描述】:

这个程序应该接受一个带有字母的电话号码,并将其转换为所有数字,但我在编译时不断收到这三个错误。

Phone_ronhoward.java:30: 错误: 'else' without 'if' else if(letter

Phone_ronhoward.java:73: 错误: ')' 预期为(int i = 0; i

Phone_ronhoward.java:73: 错误: for(int) 表达式的非法开头 我 = 0;我

3 个错误

import java.util.Scanner;

public class Phone_ronhoward
{
 public static char getNumber(char upperCaseLetter)
 {
    char returnValue = 0;

    if(letter < 'A')
    {
        returnValue = '0';
    }
    else if(letter < 'D');
    {
        returnValue = '2';
    }
    else if(letter < 'G')
    {
        returnValue = '3';
    }
    else if(letter < 'J')
    {
        returnValue = '4';
    }
    else if(letter < 'M')
    {
        returnValue = '5';
    }
    else if(letter < 'P')
    {
        returnValue = '6';
    }
    else if(letter < 'T')
    {
        returnValue = '7';
    }
    else if(letter < 'W')
    {
        returnValue = '8';
    }
    else if(letter <= 'Z')
    {
        returnValue = '9';
    }
    else
    {
        returnValue = '0';
    }
    return returnValue;

}
public static void main(String[] args)
{
    Scanner scan = new Scanner(System.in);

    System.out.print("Enter the phone number string: ");

    String phoneNumber = input.nextLine().toUpperCase();

    for(int i = 0; i < phoneNumber.length; i++;)
    {

        getNumber();

    }
} 

}

【问题讨论】:

    标签: java string phone-number


    【解决方案1】:

    else if(letter &lt; 'D'); 后面多了一个分号,删除即可:

        else if(letter < 'D')
    

    【讨论】:

    • 是的,哇,我刚刚注意到了。现在它编译但是当我运行程序时它只是打印这个。如果我输入 1800flowers,它会打印 0 0 0 0 0 0 3 5 6 9 3 7 7,而不是 1800FLOWERS
    • 因为数字在A之前,所以它们进入了第一个if语句
    【解决方案2】:

    为了防止您的问题,将所有数字转换为零:

    public static char getNumber(char upperCaseLetter)
    {
        char returnValue;
    
        if((letter >= 'A') && (letter < 'D'))
        {
            returnValue = '2';
        }
        else if(letter < 'G')
        {
            returnValue = '3';
        }
        else if(letter < 'J')
        {
            returnValue = '4';
        }
        else if(letter < 'M')
        {
            returnValue = '5';
        }
        else if(letter < 'P')
        {
            returnValue = '6';
        }
        else if(letter < 'T')
        {
            returnValue = '7';
        }
        else if(letter < 'W')
        {
            returnValue = '8';
        }
        else if(letter <= 'Z')
        {
            returnValue = '9';
        }
        else
        {
            returnValue = upperCaseLetter;
        }
    
        return returnValue;
    }
    

    【讨论】:

      【解决方案3】:

      请尝试以下代码(我已经测试过了):

      import java.util.Scanner;
      
      public class Phone_ronhoward {
          public static char getNumber(char letter) {
              char returnValue = 0;
              if (letter < 'A') {
                  returnValue = '0';
              } else if (letter < 'D') {
                  returnValue = '2';
              } else if (letter < 'G') {
                  returnValue = '3';
              } else if (letter < 'J') {
                  returnValue = '4';
              } else if (letter < 'M') {
                  returnValue = '5';
              } else if (letter < 'P') {
                  returnValue = '6';
              } else if (letter < 'T') {
                  returnValue = '7';
              } else if (letter < 'W') {
                  returnValue = '8';
              } else if (letter <= 'Z') {
                  returnValue = '9';
              } else {
                  returnValue = '0';
              }
              return returnValue;
          }
      
          public static void main(String[] args) {
              Scanner scan = new Scanner(System.in);
              System.out.print("Enter the phone number string: ");
              String phoneNumber = scan.nextLine().toUpperCase();
              for (int i = 0; i < phoneNumber.length(); i++) {
                  System.out.println(getNumber(phoneNumber.charAt(i)));
              }
          }
      }
      

      【讨论】:

      • 现在我在第 30 行收到“else without if”错误。
      • 能否指定错误行的代码?在我的代码第 30 行是 public static void main(String[] args) {.
      • 我修好了。我多了一个分号。现在它编译但是当我运行程序时它只是打印这个。如果我输入 1800flowers,它会打印 0 0 0 0 0 0 3 5 6 9 3 7 7,而不是 1800FLOWERS
      • 是的,那么输入“1800flowers”的预期输出是什么?
      • 另外,@fmbesteiro 是正确的 - 需要一个额外的“if”来排除数字输入案例。
      猜你喜欢
      • 2017-08-19
      • 2018-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多